Kann Array nicht auslesen?
Malte Köhrer
- perl
Hallo allesamt,
ich sitze hier grade an meinem 2. Perlscript und verzweifle mal wieder... Das Script soll zwei Dateien öffnen:
a) linkvorlage.html - ein template für eine fertige seite, der aus der Variablen gezogen werden und angezeigt. Es ist eine normale HTML-Datei mit $overall$ anstelle des overallratings beispielsweise.
b) links.csv - eine excelltabelle als csv (colon seperated values) exportiert, daß die Datenfelder für linkvorlage.html enthält.
Beim aufruf dieses Skipts passiert herzlich wenig, außer den nachträglich eingesetzten Statusmeldungen. Zwar wird "print qq(habe temp geoeffnet)" erreicht, aber der Teil danach scheint irgendwo einen Fehler zu haben. Ich habe mittels des (hier auskommentierten) "#print @link;" überprüft, ob @link Daten enthält und die Seite wurde korrekt ausgegeben.
Warum ignoriert er bloss die
foreach $zeile (@link)
{
print $zeile;
}
?
Für jegliche Idee wäre ich extrem dankbar. Ich seh den Fehler einfach nicht.
Malte
--- volles skript ---
#!/usr/bin/perl
use CGI qw(:standard);
@link = ("");
$linkvorlage = "linkvorlage.html";
$abfrage = new CGI;
print qq(Content-type: text/html\n\n);
open(fh_link, "<".$linkvorlage) die "kann linkvorlage.html nicht lesen\n";
while(<fh_link>) { push(@link, $_); }
close(fh_link);
#print @link;
open(f_link, "<links.csv") die "kann links.csv nicht lesen\n";
@link = ("");
while(<f_link>)
{
@data_link = split(/;/,$_);
if($data_link[1] eq $abfrage->param('url')) { last; }
}
close(f_link);
print $data_link[1];
print qq(habe temp geoeffnet);
foreach $zeile (@link)
{
print $zeile;
}
print qq(</table>);
print qq(</body></html>);
Hallo Malte,
Warum ignoriert er bloss die
foreach $zeile (@link)
»» {
»» print $zeile;
»» }
Unterhalb der Zeile:
open(f_link, "<links.csv") die "kann links.csv nicht lesen\n";
hast du stehen:
@link = ("");
Die Anweisung verstehe ich da nicht. Damit loeschst du doch den gesamten Array, den du zuvor mit:
while(<fh_link>) { push(@link, $_); }
gefuellt hast!
Und dann ist es eigentlich auch klar, warum keine $zeile ausgegeben wird. @link ist ja leer!
Bevor Du @link mit den Daten aus <fh_link> versorgst, hast du schon mal ein:
@link = ("");
dastehen. Macht als saubere Initialisierung auch Sinn. Nur das zweite Vorkommen dieser Anweisung weiter unten solltest du mal entfernen.
viele Gruesse
Stefan Muenz