Schrift
[thread]5788[/thread]

Dereferenzieren: HTML::Parser

Leser: 4


<< >> 7 Einträge, 1 Seite
pktm
 2003-10-01 23:03
#59685 #59685
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Bei dem Aufruf print print_koords(*DATA); erhalte ich HTML::Parser=HASH(0x213c3f0)
Das ist soweit ich weis eine Referenz.
Wenn ich das jetzt aber mittels print \print_koords(*DATA)->{0} dereferenzieren will kommt nur SCALAR(0x216212c). Wie komme ich denn nun an den Wert da ran?
mfg pktm

PS: Die sub
Code: (dl )
1
2
3
4
5
6
7
8
sub print_koords {
my $p = HTML::Parser->new ( api_version => 3,
start_h => [ # Handler fuer Start-Tags
\&parse_start, 'tag, attr', # Uebergib Tag und Attribute
],
);
return $p->parse_file(*DATA);
} #print_koords
http://www.intergastro-service.de (mein erstes CMS :) )
DS
 2003-10-01 23:07
#59686 #59686
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Mit \ wird referenziert, nicht dereferenziert... das ginge in diesem Fall mit %{}, was aber hier nicht wirklich sinnvoll wäre, schätz ich mal...

parse_file() gibt scheinbar die Instanz ($p) wieder zurück, aber ich kenn mit mit HTML::Parser und seinen Methoden ned so wirklich aus...
format_c
 2003-10-01 23:55
#59687 #59687
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Also Das Objekt von HTML::Parser hat nicht den Sinn einen Rückgabe Werte zurückzugeben.
Ich versteh zwar auch nicht so recht wie HTML-Parser arbeitet aber so habe ich das mal gemacht:
Code: (dl )
1
2
3
4
5
6
my $htmltext;
my $p = HTML::Parser->new ( api_version => 3,
            text_h => [sub {$htmltext .= join "",@_;}, 'text'],
 );
$p->parse($htmlcode) or warn "could not parse $link: $!";
print $htmltext;


Gruß Alex
Dubu
 2003-10-02 17:16
#59688 #59688
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
An was willst du denn heran? Der Rueckgabewert von parse_file() duerfte ziemlich uninteressant sein, und die Inhalte werden in der Funktion parse_start() auseinandergepflueckt. Da musst du sie dann irgendwo hin speichern.
pktm
 2003-10-02 20:38
#59689 #59689
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Also besser ne Hash-Regferenz oder so zum füllen mitgeben?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Maluku
 2003-10-03 01:01
#59690 #59690
User since
2003-10-02
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Deine Hash-Referenz die du bekommst sieht mir stark nach einem Objekt aus!
Vielleicht gibt pars_file ja eines zurück.

Nimm mal Data::Dumper
und schau es dir an
Code (perl): ()
1
2
3
4
5
&#36_='';
s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>btl~s;&&&&&&;!d1!l2!b3!i4!f5!r6q(?);e;Z`
`}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`return #"_#}``^!&&`"1(#""2)#\.`Z%;
s~Z~print~g;s/#/\\/g;s/`(.)(.+?)`(.+?)`/s&#36{1}&#36{2}&#36{1}&#36{3}&#36{1}g\;/g;s;&;(.);g;y^"^&#36^;
print;
Dubu
 2003-10-03 15:42
#59691 #59691
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ja, es gibt ein Objekt zurueck, naemlich den Parser selber (ein "$p->parse_file($bla)" liefert also $p zurueck). Oder undef, wenn die Datei nicht gelesen werden konnte. So steht's in der Doku, da braucht man gar nicht lange herumprobieren.
<< >> 7 Einträge, 1 Seite



View all threads created 2003-10-01 23:03.