最新の「新着記事」はここから New!
2008-09-26
length関数 - 文字列の長さ
文字列の長さを取得するにはlength関数を使用します。
$ret = length $str;
サンプル
length関数を使って、文字列の長さを取得するサンプルです。
# 文字列の長さを取得 my $message = "I like peace"; my $length = length $message;
Perlにおける文字列の長さとは
length関数は、文字列が、バイト列か内部文字列かに応じて異なる結果を返却するので注意してください。たとえば、日本語のようなマルチバイトで表現される文字の場合は、Encodeモジュールのdecode関数で内部文字列に変換してから、length関数を使用すると、正しい結果が得られます。
use strict; use warnings; use Encode 'decode'; # 引数からUTF-8でエンコードされている文字列を取得 my $bytes = shift; # 文字列の長さを取得 my $string = decode('UTF-8', $bytes); my $length = length $string;
Perl 5.10未満のlengthは未定義値を渡したときに警告を発生させる
Perl 5.10未満のlengthは未定義値を渡したときに警告を発生させます。なので、汎用的なモジュールでlengthを書きたい場合は次のように書くと警告が出ないようになります。
my $has_length = defined $foo && length $foo;
定義されているかどうかを確認してからlength関数に渡すようにする。
反対にPerl 5.12以上であれば、定義されていてかつ長さを持っているということがlength関数ひとつでかけるようになったとうことです。
my $has_length = length $foo;
業務アプリケーションで最新のPerlを使っている場合は、上記のように書くと簡潔です。


