2010-10-22 4 views
10
use YAML::XS; 
local $YAML::XS::DumpCode=1; 
... 

Name "YAML::XS::DumpCode" used only once: possible typo at ..Wie wird 'Name ... nur einmal benutzt: Tippfehler bei ...'?

Nun, ich weiß, ich diese spezielle Warnung unterdrücken kann, aber es ist kind'a hässlich. Mache ich etwas falsch? Ich bin es nicht gewohnt, gewarnt zu werden :)

Antwort

0

Es gibt keine globale Variable mit dem Namen $YAML::XS::DumpCode deklariert. Diese Konfiguration befindet sich in der Klasse YAML, daher sollten Sie sie mit local $YAML::DumpCode = 1; einstellen: siehe the documentation.

+0

Sind Sie sicher? Der C-Code scheint den XS zu verwenden: '((gv = gv_fetchpv (" YAML :: XS :: DumpCode ", WAHR, SVt_PV)) &&' –

+0

@Eric: es ist nicht dokumentiert, und es gibt eine dokumentierte $ YAML :: DumpCode', also IMHO, dass diese Variable überhaupt nicht da sein sollte. Das XS sollte '$ YAML :: DumpCode' verwenden. – Ether

+0

http://search.cpan.org/~ingy/YAML-LibYAML-0.34/ lib/YAML/XS.pm # KONFIGURATION spricht explizit '$ YAML :: XS :: UseCode' an. –

18

Es scheint wie $YAML::XS::DumpCode wird nur aus C-Code verwendet, und es wird nie initialisiert in YAML/XS.pm (es ist da, aber auskommentiert). Das könnte also ein Fehler sein, der gegen dieses Modul gesendet wird.

In der Zwischenzeit sollte no warnings 'once'; den Trick tun.

+0

Die gleiche Warnung gilt für' local $ YAML :: UseCode = 1; '. Ist das der gleiche Fall? Anothr Bug (diesmal in "YAML" selbst)? –

+1

@David => Der Link "Weitere Tools" auf jeder cpan-Veröffentlichungsseite enthält ein grep-Tool zum schnellen Durchsuchen aller Dateien in der Version. Ich würde empfehlen, nach "UseCode" zu suchen und zu sehen, wie es im Modul verwendet wird. –