Thread aus HTML auslesen
(24 answers)
Opened by rioc at 2008-04-11 15:24
Hallo zusammen
Ich bin noch nicht sehr lange mit PERL am scripten, habe jedoch etwas Erfahrung aus anderen Programmiersprachen. Meine Aufgabe ist es, ein Script zu schreiben, welches Server-Infos aus einer Ausgabedatei von cfg2html entnimmt, und diese in einer überslichtlicheren HTML-Seite darzustellen (da cfg2html ein eher unübersichtliches Ergebnis liefert, und meine Vorgesetzten gewisse Infos auf einen Blick haben möchten). d.h. also ich lese aus einer HTML datei Infos aus, und schreibe diese in ein anderes HTML File. hier zunächst mal zwei Code-Ausschnitte, die mir Probleme liefern: #1 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 foreach $line (@data) { if ($line =~ /start:/) { @stst = (split /\:/, $line); print "<font size=+2>$stst[1]</font size>\n"; print "<table cols=7 BORDER=1 cellpadding=1 cellspacing=1>\n"; print "<tr>\n"; print "<td width=150 align=right><b>Hostname</b></td>\n"; print "<td width=120 align=right><b>IP-Adresse</b></td>\n"; print "<td width=150 align=right><b>Model</b></td>\n"; print "<td width=80 align=right><b>uptime (d)</b></td>\n"; print "<td width=60 align=right><b>OS</b></td>\n"; print "<td width=100 align=right><b>Last Update</b></td>\n"; print "<td width=50 align=right><b>SN</b></td>\n"; print "</tr>"; } elsif ($line =~ /end:/) { print "</table>\n"; print "<br><br>\n"; } else { print "<tr>"; $file=$path . ".html" . $line; if (-f $file) { open(TEMP,$file); } else { @myunkn= split /\./, $file,3; $myunknown=$myunkn[0] . "." . $myunkn[1]; open(TEMP,$myunknown); $file=$myunknown; } @lines=<TEMP>; #2 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 @Host=grep {/Host:/} @lines; @AHost=split (/ /,$Host[0]); $filepath=$htmlpath . $line . ".html"; @Domain=grep {/DNS domain name:/} @lines; @ADomain=split (/ /,$Domain[0]); print "<td width=150 align=right><a href=$filepath>$AHost[1].$ADomain</a></td>\n"; @IP=grep {/IPAdress:/} @lines; print "<td width=150 align=right>"; foreach $run (@IP) { @AIP=split (/ /,$run); print $AIP[1] . "<br>"; } print "</td>\n"; die Fehlermeldungen: zu Ausschnitt 1: readline() on closed filehandle TEMP at listhosts.pl line 124. (Zeile 124 ist: @lines=<TEMP>;) (hier also Zeile 39) (ich habe die vorangehenden Zeilen mitgeliefert, da vielleicht das Problem weiter oben bedingt ist.) zu Ausschnitt 2: Use of uninitialized value in split at listhosts.pl Use of uninitialized value in concatenation (.) or string at listhosts.pl Ich danke schon im Voraus :) Grüsse rioc |