Data::Dumper & bytes;
printf "Contents are %vd\n", $x; # "Contents are 400" { use bytes; # or "require bytes; bytes::length()" print "Length is ", length $x, "\n"; # "Length is 2" printf "Contents are %vd\n", $x; # "Contents are 198.144" }
perldoc bytes にも上記のように書いてありますが、use bytes; 宣言を使用せずにバイトセマンティクスを強要したいときには、bytes::length(); みたいな書き方をしますが、これをするためには事前に require bytes; が必要です。
しかし、昨日気がついたのですが、use Data::Dumper; してると require bytes; が必要ないようです。
#!/usr/local/bin/perl use strict; use warnings; printf "length = %s\n", bytes::length("hogehoge");
% ./test.pl Undefined subroutine &bytes::length called at ./test.pl line 6.
#!/usr/local/bin/perl use strict; use warnings; use Data::Dumper; printf "length = %s\n", bytes::length("hogehoge");
% ./test.pl length = 8
ちなみに環境は
% /usr/local/bin/perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=freebsd,
です。昨日 use Data::Dumper; を外すとスクリプトがまともに動かなくなる奇妙な現象に見舞われて気がついたんだけど、Data::Dumper って他にもこういうことするのかなあ。