bytes.pm will be deprecated in Perl 5.12の話の続きです。 なぜ bytes::length()*1を使うべきでないか。それは、一般論としてコードの意味がおかしく、また実際にバグの温床になるからです。 まず、入力されたバイト列をデコードして内部表現にし、出力の際にエンコードをするというモデルでは、文字列もその他のデータ型もまったく変わりません。たとえば、{ "foo" : 42 }というJSONのデータをデコードして{ foo => 42 }というPerlの内部表現にするプログラムを考てみます。この際、内部表現のサイズを直接得る関数を提供するのは妥当といえるでしょうか。 #!perl use strict; use warnings; use JSON qw(encode_json decode_json); my $input = <<'JSON';