'A' => 1,
'C' => 'Hola',
'B' => [
1,
2,
3
]
};
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
do EXPR
Usa el valor de EXPR como el nombre de un archivo y ejecuta los contenidos del archivo como un script Perl.
do 'stat.pl';
es igual que
eval `cat stat.pl`;
excepto que es más eficiente y conciso, mantiene el nombre del archivo en los mensajes de error, busca en los directorios @INC...
Given a list of scalars or reference variables, writes out their contents in perl syntax.
Cuando tu hacer Dumper %frecuencias; no enviando una variable estás, sino despliegue de esa variable hacer. Por eso, muchos $VARx en archivo aparecer.
...podemos abreviar algunas cosas. Por ejemplo, todas las líneas encargadas de abrir el archivo en modo lectura, guardarlas a una variable, y luego evaluarlas... todo eso lo hace una función en un solo paso: do().
Bueno, queda una cosilla suelta... En el archivo de volcado sigue apareciendo la dichosa variable $VAR1. Leyendo la página de manual de Data::Dumper, vemos que podemos dejarlo algo mejor:Using perl Syntax Highlighting
print $ofh Data::Dumper->Dump([ \%frecuencias ], ['*frecuencias']); # en el archivo se guarda %frecuencias = ( ... Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
# extended usage with names
print Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
Se trata de lo siguiente:otronovato escribiste:Se trata de una sutileza que no acabo de comprender. Y por ahora cada vez que intento acceder directamente a la documentación me doy de cabeza con mi falta de conocimientos.explorer escribiste:Cuando tu hacer Dumper %frecuencias; no enviando una variable estás, sino despliegue de esa variable hacer. Por eso, muchos $VARx en archivo aparecer.
Yo te he dicho que ese lío de corchetes y demás está impuesto por el propio módulo Data::Dumper, que lo exige de esa manera. Y por esa razón existe el Data::Dumper::Simple, que simplifica todo ese rollo. De hecho, el módulo es un filtro que traduce nuestro programa a lo que pide Data::Dumper. No hace nada raro, solo eso.otronovato escribiste:Absolutamente perdido. Veo lo que hace pero la POO en Perl me resulta extraña por completo. Además me parece que tendré que manejarme con las referencias mucho mejor de lo que lo hago ahora para poder meterme con éso.explorer escribiste:Bueno, queda una cosilla suelta... En el archivo de volcado sigue apareciendo la dichosa variable $VAR1. Leyendo la página de manual de Data::Dumper, vemos que podemos dejarlo algo mejor:
El manual dice que el segundo array de Dump son los nombres de las variables. En caso de variables escalares no hace falta escribir el '$' delante, como es el caso de 'foo'. Y para cuando son nombres de variables que son referencias a arrays y hashes, se debe poner un '*' delante.otronovato escribiste:De hecho este ejemplo de la documentación me parece oscuro a más no poder... En la segunda referencia a la lista con los nombres que queremos que tengan las variables volcadas... ¿Qué significa '*ary'?# extended usage with names
print Data::Dumper->Dump([$foo, $bar], [qw(foo *ary)]);
In the extended usage form, the references to be dumped can be given
user-specified names. If a name begins with a C<*>, the output will
describe the dereferenced type of the supplied reference for hashes and
arrays, and coderefs. Output of names will be avoided where possible if
the C<Terse> flag is set.
=item I<PACKAGE>->new(I<ARRAYREF [>, I<ARRAYREF]>)
Returns a newly created C<Data::Dumper> object. The first argument is an
anonymous array of values to be dumped. The optional second argument is an
anonymous array of names for the values. The names need not have a leading
C<$> sign, and must be comprised of alphanumeric characters. You can begin
a name with a C<*> to specify that the dereferenced type must be dumped
instead of the reference itself, for ARRAY and HASH references.
$Data::Dumper::Purity I<or> I<$OBJ>->Purity(I<[NEWVAL]>)
Controls the degree to which the output can be C<eval>ed to recreate the
supplied reference structures. Setting it to 1 will output additional perl
statements that will correctly recreate nested references. The default is
0.
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado