連続する空白(改行含む)のパターンマッチではまる

実際にはJavaScriptで書いててはまったのですが。

my $blk_str = "         aaa";
$blk_str =~ s/^\s+?//g; # こっちだと最初の一つ目の\sだけにマッチ
#$blk_str =~ s/^\s+//g; # こっちだと連続する\sにマッチ
print $blk_str.$/;

my $num_str = "12345aaa";
$num_str =~ s/\d+?//g;
print $num_str.$/;

my $wrd_str = "hogefoovar";
$wrd_str =~ s/\w+?//g;
print $wrd_str.$/;

結果は以下の通り。

[webmaster@localhost dev]$ ./test.pl
        aaa
aaa

[webmaster@localhost dev]$


一年位前にも類似で以下のような正規表現ではまったことがありました。

http://d.hatena.ne.jp/srkzhr/20080417/1208436811

my $str = 'http://d.hatena.ne.jp/srkzhr/20080417/1208416359';
print "$1,$2\n" if $str =~ m{http://.+?/.+?/(\d+?)/(\d+?)}; # -> 20080417,1


「空白・改行が絡んでくる場合、最短マッチは要注意」という感じなのかな。