Perl : m//g と \G と pos

http://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html#using_regular_expressions_in_perl
http://perldoc.jp/docs/perl/5.6.1/perlop.pod#item__PATTERN_cgimosx

while ($dna =~ /\G(\w\w\w)*?TGA/g) {
  print "Got a TGA stop codon at position ", pos $dna, "\n";
}

s///gはよく使っていたのだけれど、m//gのパターンの使い方って、実はあまり理解していなかったことに気づいた。上のように、\Gと組み合わせて使ったり、下のようにリストコンテキストで使ったりする。

@words = ($x =~ /(\w+)/g);

posは、マッチした位置を返す。また、リストコンテキストで使うと、マッチした全ての文字がリストで取得できる。

      • -

ということは、

@words = split(/,/, $input);

の代わりに、以下のようにもかけるということだ。

@words = ($input =~ /([^,]+)/g);