Förstår inte riktigt hur du menar, men i princip gör man såhär för att öppna filen text.txt när man anropar med script.pl?file=text.txt
OBS: Väldigt osäker kod, ta inte denna i drift som den är - med denna kan man läsa varenda fil i hela systemet. Dessutom är den skriven helt ur minnet. :-)
#!/usr/bin/perl
#
#
use CGI qw(:standard escapeHTML);
print header();
open FILE, param('file') || die;
while(<FILE> ) {
print $_;
}
close FILE;
Det värde som du sänder med ger du bara tillgägget .txt. Variabeln $filer skall innehålla sökvägen till mappen där filen du vill läsa till, finns lagrad.
//Demo
open (TEXT,"$filer/$INFO{'id'}.txt")|| print "Kan inte hitta \n";
while ($rad=<TEXT> ){
$rad=~/(.*)::(.*)/;
$INFO1=$1;
$INFO2=$2;
}
close (TEXT);
------------------ Den som vandrar ödmjukhetens väg drabbas inte av trafikstockningar.
Båda alternativen fungerar nog om man ändrar förutsättningarna efter behovet.
Det är ju svårt att ge en helt fungerande kod om man t.ex inte vet hur resultatet ska skrivas ut.
Ska texten delas upp i olika värden?
Följande öppnar i.a.f. en fil och skriver ut den i befintligt skick.
#!/usr/bin/perl
use CGI qw(:standard);
my $action = (param('action')) ? param('action') : 'viewFile';
&headerHTML;
view_file() if($action eq 'viewFile');
sub view_file {
$id = param('id');
open (FILE,"<$id.txt") or die "$id.txt: $!\n";
@lines = <FILE>;
close (FILE);
print <<TEXT;
<table>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2">@lines</font></td>
</tr>
</table>
TEXT
}
&footerHTML;
################
sub headerHTML {
print "Content-type: text/html\n\n";
print<<HEAD;
<html>
<head>
<title>Titeln</title>
</head>
<body>
HEAD
}
sub footerHTML {
print<<FOOT;
</body>
</html>
FOOT
}
Antaganden:
Textfilen finns i samma mapp som skriptet och om textfilen heter 12.txt så anges
skriptnamn.cgi?id=12 för att infoga filen i ett HTML-dokument.
Det finns utrymme för flera varianter och uppdelning av värden i textfilen (om dessa existerar) och andra "actions" kan enkelt läggas i andra subrutiner.
(subrutinen view_file körs som default utan action)
Du får pula lite själv och se hur det blir och återkom sedan om det finns speciella önskemål.
Hmm,, hur ska man hämta informationen med denna kod,
om filen ser ut så här ,
12::namn::rubrik::inlagg::datum
då ska detta hämtas ut på sidan,
det borde ju se ut så här eller något,
ID: $param('id');
Namn: $param('namn');
Rubrik: $param('rubrik');
eller.?
Jag tar för givet att varje inlägg ligger i en egen rad.
Du skrev ovanför att värdena var indelade i
12::namn::rubrik::inlagg::datum
och då antar man att det ser ut så här i textfilen.
12::namn::rubrik::inlagg::datum
13::namn::rubrik::inlagg::datum
14::namn::rubrik::inlagg::datum
o.s.v.
Varför har du en massa html-kod i textfilen?
Tanken var att skriptet skriver ut sidan och infogar inläggen ifrån textfilen...