$YAML::Syck::ImplicitUnicode と use warnings

YAML::Syck の ImplicitUnicode については id:miyagawa さんの記事 - YAML parser が詳しいのですが,

perl -w -MYAML::Syck -e '$YAML::Syck::ImplicitUnicode = 1;'

とすると,

Name "YAML::Syck::ImplicitUnicode" used only once: possible typo at -e line 1.

みたく警告がでてしまいます。

同じように Syck パーサの挙動を制御する ImplicitTyping については,

perl -w -MYAML::Syck -e '$YAML::Syck::ImplicitTyping = 1;'

としても警告はでません。

YAML/Syck.pm の 3 行目あたり

use vars qw( @ISA @EXPORT $VERSION $ImplicitTyping $UseCode $LoadCode $DumpCode
 $SortKeys $DeparseObject );

ここに $ImplicitUnicode がないのがイカンのかなぁ。そういえば $Headless もないですね。ワケありなのかなぁ。そもそも普通 use warnings なんてしないのかなぁ。

ちなみに JSON::Syck については JSON/Syck.pm のほうで使われてるんで,同じようなことをしても警告はでません。

とりあえず,

{
    no warnings 'once';
    $YAML::Syck::ImplicitUnicode = 1;
}

ってやれば逃げれる…でもこの書き方だと local にできねい…