¿Puede alguien explicarme por qué la salida de este pequeño script de Perl es "foofoo" (y no "foo")?Comportamiento extraño en una expresión regular de perl con sustitución global
#!/usr/bin/perl -w
my $var="a";
$var=~s/.*/foo/g;
print $var."\n";
Sin la opción g, funciona como pensé, pero ¿por qué es el patrón de coincidencia de opciones globales dos veces?
En salida Bash es "foo" como se esperaba
echo "a"|sed -e "s/.*/foo/g"
Cualquier explicación sería apreciada.
Sí, eso es, estoy convencido de '$ var = ~ s /^.*/ foo/g;' No me di cuenta de que coincidiría con la cadena vacía, pero en realidad es algo obvio – rcout
Pensándolo bien, * es se supone que es codicioso, ¿cómo es? – rcout
@rcout: la codicia tiene que ver con los tiempos de una repetición, de alguna manera no avanzará más allá del final de la cadena – ysth