Kort och gott:
1. Jag har en text fil som ska laddas upp på en unix-server.
2. Med hjälp av ett perlscript ska innehållet i filen läsas in och ändras för att slutligen sparas i en html-fil som ska visas för användaren som laddae upp textfilen i steg 1.
Innehållet i text ser ut så här med den skillnad att att antalet rader i filen inte nödvändigtvis är det samma:
Om jag kunde använt mig av ASP så hade det inte varit ngt större problem att lösa det hela men nu så måste jag använda mig av Perl som jag är minst sagt värdelös på kan inte ens grunderna i språket men som jag har förstått så ska det iaf vara överlägset det mesta när det gäller att bearbeta textfiler.
Så jag hoppas att det inte är ngt större problem för något som kan språket att hjälpa mig med mitt lilla problem ;)
Bör väl tilläggas att jag inte är världens höjdare på reguljära uttryck heller :(
Funktionen split() är ju ett utmärkt val i sådana här fall.
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Perl-kod:<pre>
# Läser in textfilen
open INFILE, "<data.txt" or die "Error: $!";
my @rows = <INFILE>;
close INFILE;
# Skriver ut resultatet
open OUTFILE, ">result.html" or die "Error: $!";
# Här skrivs inledande HTML in
map {
my @items = split /;/;
chop $items[4];
chop $items[4];
chomp $items[8];
print <<_EOF_;
<tr><td bgcolor=green>$items[2]</td><td bgcolor=green>$items[4]</td>
<td bgcolor=green>$items[5]</td><td bgcolor=green>$items[6]</td>
<td bgcolor=green>$items[8]</td></tr>
_EOF_
} @rows;
# Här skrivs avslutande HTML in
close OUTFILE;
Ovanstående kod fungerar inte för mig..
Får följande fel när jag kör koden i konsolen:
syntax error at ./golf.pl line 20, near "@rows
# Här skrivs avslutande HTML in
close"
Execution of ./golf.pl aborted due to compilation errors.
Hela koden:
#!/usr/bin/perl
# Läser in textfilen
open INFILE, "<data.txt" or die "Error: $!";
my @rows = <INFILE>;
close INFILE;
# Skriver ut resultatet
open OUTFILE, ">golf.htm" or die "Error: $!";
# Här skrivs inledande HTML in
map {
my @items = split /;/;
chop $items[4];
chop $items[4];
chomp $items[8];
print <<_EOF_;
<tr bgcolor=green><td>$items[2]</td><td>$items[4]</td>
<td>$items[5]</td><td>$items[6]</td><td>$items[8]</td></tr>
_EOF_
} @rows
# Här skrivs avslutande HTML in
close OUTFILE;
Aha.. Så dumt..
Men det är något lurt iaf.. Filen golf.htm skapas men den är och förblir tom..
HTML koden skrivs ut i konsolen men lagras alltså inte i golf.htm..
Om jag vid ett senare tillfälle vill fylla på filen golf.htm med fler rader hur gör jag då!?
Med andra ord, om jag får en ny data.txt med nya data som ska läggas till och jag vill använda mig av samma script..