タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

perlとdumpに関するacotieのブックマーク (2)

  • ピヨピヨ ZeroMemory( ) » Blog Archive » Data::DumperでUTF-8フラグつき文字列をエスケープさせないようにするには

    変数の中身を表示してくれるperlのCPANモジュール、Data::Dumperは、UTF8フラグのついているデータがエスケープされて文字化け状態になってしまうため、UTF8で日語を扱う時に困る。でもそもそもUTF8フラグがついていなければエスケープされることもなくて困らないのはなんで?というわけでソースを読むと Data::Dumper::qquote() というメソッドの中で、文字列をエスケープする条件に my $bytes; { use bytes; $bytes = length } s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length; というトリッキーなコードが入っていた。UTF-8フラグがついていると、UTF8の文字列が正しく文字として認識されてlengthがバイト数よりも小さくなるので

    acotie
    acotie 2008/10/26
    とても参考になりました。ありがとうございます。
  • [Perl]useなしでどこでもDump(@INCにオブジェクトを格納するパターン)

    PERL HACKSを読んでいたら@INCにはhookが仕込めるということが書いてありました。 ■[Perl]use無しでどこでも変数をダンプするpackage P;p でも言及されているとおりかねてからuseがめんどうだと思っていたのですが、これを使えばうまくいくんじゃないか?ということでやってみました。 @INCの仕組み http://perldoc.perl.org/functions/require.html によると@INCにはCODEやオブジェクトを格納することができます。 これを利用するとモジュールロード前にhookを仕込むことができます。 There are three forms of hooks: subroutine references, array references and blessed objects. とあります。subroutine reference

  • 1