perl の split で、パターンも含めた配列を返す

perl の split で、パターンも含めた配列を返す #

例えば、

 my @tmps = split(/,/, 'hello, world');

の場合は

 @tmps = ('hello',' world');

だが、

 my @tmps = split(/(,)/, 'hello, world');

の場合は

 @tmps = ('hello',',',' world');

となり、「,」も含まれる。

どういうときに便利かというと、

 for my $str ( split(/({{|}})/, 'aa{{plugin arg}}bb') ) {
   if ($str eq '{{') {
   }
   elsif ($str eq '}}') {
   }
   else {
   }
 }

というような感じで使う。

。。。というようなことに、ruby の Regexp.union 関連を見ててたどりついたわけだが、

 perldoc -f split

するとちゃんと書いてある。やっぱり基本は重要。

See Also

Copyright © 髭。/ Hugo + hugo-book