Hallo NG,
ich wollte mal den HTML::Parser Beispielcode von Renee Baecker
(http://perl.renee-baecker.de/HTML_Parser.pdf)
'verändert' probieren; bekomme aber Fehler.
In der foreach schleife versuche ich abzufangen, dass einige der Links
keinen Linktext haben (sondern z.B. etwas
grafisches wie ein Pfeil oder ein Dreieck).
Wenn ich strict und warnings auskommentiere und ohne -w starte bekomme
ich (wie es auch sein soll):
~~~Screenshot~~~~
Linktext: Anwendungen URL: /apps
Linktext: Lizenzen URL: /lics
..=2E.cut..ähnliches.
Linktext: keins URL: /lic/EIIBSP031
..=2E.cut..ähnliches.
~~~/Screenshot~~~~
aber mit -w oder strict+warnings
~~~Screenshot~~~~
Use of uninitialized value in string eq at geturl2html_b.pl line 151.
Linktext: Anwendungen URL: /apps
Use of uninitialized value in string eq at geturl2html_b.pl line 151.
..=2E.cut...
Use of uninitialized value in string eq at geturl2html_b.pl line 151.
Use of uninitialized value in string eq at geturl2html_b.pl line 151.
Linktext: keins URL: /lic/EIIBSP031
~~~/Screenshot~~~~
Mir ist klar, dass der Vergleich in der foreach-Schleife nicht richtig
ist, und mein Fehler
wahrscheinlich sehr trivial ist. Aber, wie wäre das richtig?
Wie kann man Links ohne einen Linktext erfassen?
Vielen Dank im Voraus
Celal Dikici
~~~BEGIN Perl Code~~~~
use strict;
use warnings;
use HTML::Parser;
my [at] links;
my $string =3D qq~<HTML>
<HEADER>
<TITLE>Benutzte Lizenzen</TITLE>
</HEADER>
<BODY BGCOLOR=3D"#FFFFFF">
<TABLE BORDER=3D"1" WIDTH=3D"100%">
<TR>
<TH ALIGN=3D"CENTER"><A HREF=3D"/apps">Anwendungen</A></TH>
<TH ALIGN=3D"CENTER"><A HREF=3D"/lics">Lizenzen</A></TH>
..=2E.cut irrelevant stuff...
<TR>
<TD><A HREF=3D"/lic/EIIBSP031"><IMG SRC=3D"/img/expand.gif"
BORDER=3D"0"></A>Benutzer foo</TD>
<TD>App fasel</TD>
..=2E.cut irrelevant stuff...
</HTML>~;
my $p =3D HTML::Parser->new();
$p->handler(start =3D> \&start_handler,"tagname,attr,self");
$p->parse($string);
foreach my $link( [at] links){
if( $link->[1] eq undef ){ # nicht in
$link->[1] =3D "keins"; # original beispiel
} # vorhanden
print "Linktext: ",$link->[1],"\tURL: ",$link->[0],"\n";
} # END foreach
sub start_handler{ ...erspare ich hier, da unverändert übernommen...
~~~END Perl Code~~~
