Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

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~~~
Celal Dikici [ Mi, 24 Januar 2007 11:39 ] [ ID #1606958 ]

Re: Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

Celal Dikici wrote:

> 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?

Versuchs mal mit:

if (!defined $link->[1])

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Mi, 24 Januar 2007 11:56 ] [ ID #1606959 ]

Re: Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

On 24 Jan., 11:56, Frank Seitz <devnull4... [at] web.de> wrote:
> Celal Dikici wrote:
> > 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?
> Versuchs mal mit:
>
> if (!defined $link->[1])

Jau, das war's. Vielen dank

Celal
Celal Dikici [ Mi, 24 Januar 2007 12:05 ] [ ID #1606960 ]
Perl » de.comp.lang.perl.misc » Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

Vorheriges Thema: Code Optimierung eines Fünfzeilers
Nächstes Thema: S: RegExp