分解する文字列長がすべて同じであれば $str = 'abcdefghijkl'; push @char, substr $str, 0, 3, '' while ($str); # @char に (abc, def, ghi, jkl) が入る 上のコードで、対象文字列が3文字ずつで割り切れない場合、リストの最後に 余りの文字列も含まれる。 不要の場合は、while の条件で (length $str >= 3) 等とする。 ただし上のコードは、$str が壊れるので事前にコピーをしておくか、パターンマッチを使う。 @chars = ($str =~ /.{1,3}/g); で3文字ごと。 余りが不要であれば、/.{3}/ と3文字限定にすれば良い。 遅いけど。