関数順 インデックス
目的別 インデックス

構文
 
 length 文字列

返り値
 
 文字列の長さ(文字数)

説明

  • 文字列の長さを文字数で返します。
  • 引数を省略すると$_が対象になります。

使用例

変数$strの文字列の長さを出力する
#!/usr/bin/perl
use strict;
use warnings;

my $str = 'abcdefg';
print length $str, "\n";
変数$strの文字列の長さを出力する(日本語)
#!/usr/bin/perl
use strict;
use warnings;
use encoding "utf8"; # ソースがUTF-8の場合
#use encoding "euc-jp"; # ソースがEUC-JPの場合

my $str = 'あいうえお';
print length $str, "\n";
※utf8フラグが付いていれば日本語でも文字数を取得することができます。

変数$strの文字列のバイト数を出力する
#!/usr/bin/perl
use strict;
use warnings;
use encoding "utf8"; # ソースがUTF-8の場合
#use encoding "euc-jp"; # ソースがEUC-JPの場合

my $str = 'あいうえお';
print "length:", length $str, "\n"; # 文字数
print "bytes :", bytes::length $str, "\n"; # バイト数
※utf8フラグが付いている文字列のバイト数を調べる場合はbytes::lengthを¥使います。

変数$strの文字列のバイト数を出力する(EUC-JP)
#!/usr/bin/perl
use strict;
use warnings;
use encoding "utf8"; # ソースがUTF-8の場合
#use encoding "euc-jp"; # ソースがEUC-JPの場合
use Encode;

my $str = 'あいうえお';
print "length:", length $str, "\n"; # 文字数
print "bytes :", bytes::length $str, "\n"; # バイト数(UTF-8)
print "\n";

my $euc_str = Encode::encode('euc-jp', $str);
print "length:", length $euc_str, "\n";
※特定エンコーディングでのバイト数を調べる場合にはutf8フラグを外してからlengthを使います。

配列@dataの要素の数出力する
#!/usr/bin/perl
use strict;
use warnings;

my @data = (1, 2, 3, 4, 5);

print scalar(@data), "\n";
※配列やハッシュの大きさを調べる場合にはlengthは使えません。

ハッシュ%dataの項目の数を出力する
#!/usr/bin/perl
use strict;
use warnings;

my %data = (
  hoge => 1,
  fuga => 2,
  piyo => 3,
);

print scalar(keys %data), "\n";