perlでSHA1ハッシュ チェックサムの作成でWide character in subroutine…
Digest::SHA1でsha1ハッシュ値を作成する時に日本語(内部文字列 utf8フラグ有り)を含むとWide character in subroutine...とエラーになってしまう。
use utf8;
use Digest::SHA1 qw/sha1_hex/;
print sha1_hex("あいう"), "\n";
# エラー
Encodeすれば大丈夫だけど、Mojolicious使いとしてはMojo::ByteStreamを使おうと思う。
use utf8;
use Mojo::ByteStream 'b';
print b("あいう")->sha1_sum->to_string, "\n";
utf8フラグが立っていても大丈夫。
実行結果も同じ。
use utf8;
use Mojo::ByteStream 'b';
use Digest::SHA1 qw/sha1_hex/;
use Encode;
print sha1_hex(encode('utf8',"あいう")), "\n";
print b("あいう")->sha1_sum->to_string, "\n";
# 結果
eb636ba7c320e00b3749ad404b7adc7609560dee
eb636ba7c320e00b3749ad404b7adc7609560dee
-
前の記事
groonga対応のMySQLをMAMPで使ってみる。 2012.05.30
-
次の記事
mac用キーボードのガンコな汚れを真っ白に掃除できる秘密兵器 2012.08.01