Странное поведение в регулярном выражении Perl с глобальной заменой

Кто-нибудь может мне объяснить, почему вывод этого небольшого скрипта perl - «foofoo» (а не «foo»)?

#!/usr/bin/perl -w 
my $var="a";
$var=~s/.*/foo/g;
print $var."\n";

Без опции g это работает так, как я думал, но почему глобальная опция соответствует шаблону дважды?

В bash выводится «foo», как и ожидалось

echo "a"|sed -e "s/.*/foo/g" 

Любое объяснение приветствуется.

17
задан rcout 10 May 2011 в 15:21
поделиться