El código de ejemplo es:
#!/usr/bin/perl -w my $a = "hola"; sub NoRef{ my $tmp = $_[0]; $tmp =~ s/hola/chau/g; print "dentro: '" . $tmp . "'\n"; return 0; } sub WithRef{ my $tmp = \$_[0]; $$tmp =~ s/hola/chau/g; print "dentro: '" . $$tmp . "'\n"; return 0; } print "primero a es $a\n"; NoRef($a); print "ahora es a es $a\n"; WithRef($a); print "y por ultimo a es $a\n";
La explicación (gíbara) es, al usar referencias, la variable pasa a ser un puntero, con lo que la salida es:
primero a es hola dentro: 'chau' ahora es a es hola dentro: 'chau' y por ultimo a es chau
Esto es de utilidad, para entender el funcionamiento de funciones como uc o push. La primera no hace nada con la variable, regresa el resultado, pero la variable queda intacta. Mientras que la segunda, regresa el número de elementos del array, pero modifica el array que se le pasó agregando el listado de objetos pasados.
No hay comentarios.:
Publicar un comentario