2009-03-12 6 views
-1

Ich erhalte den Fehler"Nicht definierte Unterprogramm & HTML :: Entities :: decode_entities namens"

Undefined Subroutine & HTML :: Entities :: decode_entities called`

LWP::UserAgent verwenden, obwohl die Modul ist da, sowie das HTML::Parser Modul.

Ich vermute es hat etwas damit zu tun, dass XS Module fehlen, da die betreffende Funktion in XS implementiert zu sein scheint, aber ich bin ratlos.

+0

Können Sie ein kurzes Beispielskript zeigen, das das Problem veranschaulicht? –

Antwort

-1

Vermissen Sie diese Zeile:

use HTML::Entities; 

Vom HTML::EntitiesCPAN page, sollte es wie folgt verwendet werden:

use HTML::Entities; 
my $a = "Våre norske tegn bør &#230res"; 
decode_entities($a); 
encode_entities($a, "\200-\377"); 

Wenn Sie denken, es ist etwas falsch mit dem HTML :: Entities Paket , können Sie die Quelle auf Ihrem System überprüfen. Von bash:

vim $(perldoc -l HTML::Entities) 

Sobald die Datei in einem Texteditor geöffnet ist, können Sie überprüfen, ob das Unterprogramm definiert ist. Ich vermute, dass das Paket korrekt ist, es ist jedoch wahrscheinlicher, dass das Paket nicht "verwendet" wird.

Sie können diesen Test auch in der Befehlszeile, um zu sehen, ob es außerhalb Ihres Programm funktioniert:

perl -MHTML::Entities -le 'print HTML::Entities::decode_entities("Våre norske tegn bør &#230res")' 
+0

Ich habe versucht, das Modul explizit als Test zu verwenden und es hat nicht funktioniert. Es funktioniert auch nicht in LWP :: UserAgent. – heeen

+0

Funktioniert der Perl Einleiner? Haben Sie das Paket überprüft, um festzustellen, ob das Unterprogramm definiert wurde? Wenn das alles auscheckt, ist es möglich, Ihren Code dem Post hinzuzufügen? – gpojd

+0

Kannst du bitte vollen Code posten? Ich habe kürzlich die aktuelle Version von HTML :: Entities verwendet, und es funktioniert gut. Also ich denke nicht, dass es das Modul ist. – Telemachus

1

Neuere Versionen von HTML :: Entities hängen die decode_entities Routine auf dem Erhalten der HTML durch das Laden :: Parser-Moduls XS-Komponente. Da die zwei Module zusammen verteilt sind, sollte dies kein Problem sein, aber es ist möglich, dass Sie eine ältere HTML :: Parser-Version haben, die stattdessen XS verwendet (oder mehrere Versionen von HTML :: Parser installiert, mit der falschen Version) zuerst gefunden).

Überprüfen Sie die $ VERSION in HTML :: Parser, suchen Sie diese Verteilung auf http://search.cpan.org/dist/HTML-Parser, und überprüfen Sie, dass die Verteilung die Version von HTML :: Entitäten hat, die Sie haben.