Perl である文字列を n 文字ずつ区切って配列にする方法。
例として "abcdefghi"
が与えられた時に 3 文字ずつで区切りたい場合は "abc", "def", "ghi"
となることが期待される。
これを簡単に行う方法を思いついたので以下に記述。
sub sep { $_[0] =~ /.{$_[1]}/g } # 3 文字ずつ取得 my $str = "abcdefghi"; print "$_\n" for sep $str, 3;
3 文字の場合何をしているかというと sep サブルーチンの中では実質、次の正規表現が実行される。
"abcdefghi" =~ /.../g
これが 3 文字ずつで区切った配列を返す。それで .{$_[1]}
としているのは上記の条件だと .{3}
となり、...
と等しくなる。
これは便利!!