Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

Mein Fehler bei HTML::Parser Beispiel von Renee Baecker

am 24.01.2007 11:39:33 von Celal Dikici

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
...cut..ähnliches.
Linktext: keins URL: /lic/EIIBSP031
...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.
...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 @links;
my $string =3D qq~


Benutzte Lizenzen







...cut irrelevant stuff...





...cut irrelevant stuff...
~;


my $p =3D HTML::Parser->new();

$p->handler(start =3D> \&start_handler,"tagname,attr,self");
$p->parse($string);

foreach my $link(@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~~~

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

am 24.01.2007 11:56:54 von Frank Seitz

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

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

am 24.01.2007 12:05:32 von Celal Dikici

On 24 Jan., 11:56, Frank Seitz 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:
>=20
> if (!defined $link->[1])

Jau, das war's. Vielen dank

Celal

BORDER=3D"0">Benutzer foo App fasel