O, si quieres ser realmente sucio: {local $,=', ';print @array}.
musiKk
10
Hay más de una forma de hacerlo ... pero esta es la forma que no hace que la persona que mantiene el código después de que usted lo odie. Sí, perldoc perlvar existe, pero prefiero echar un vistazo a "join", "@array" que presionar perlvar cada dos líneas para averiguar qué están haciendo todas las variables esotéricas.
Oesor
@Oesor: Por eso lo llamé sucio. Pero bueno, mirando las otras respuestas, no soy realmente el peor infractor. :)
musiKk
@musiKK ¡Me gusta! Es algo que usaría si quisiera desconcertar a mis compañeros de trabajo. :)
Alex
3
Esto funcionó muy bien para imprimir el contenido del directorio. print "current directory contains " . join(', ', <*>) . "\n";
En Ubuntu / Mint, instale el paquete libdata-dump-perl.
MUY Bélgica
2
¡La mejor respuesta aquí! También funciona con matrices multidimensionales. Más flexible.
Léo Léopold Hertz 준영
18
Si está codificando para el tipo de claridad que entendería alguien que recién comienza con Perl, la construcción tradicional de este dice lo que significa, con un alto grado de claridad y legibilidad:
$string = join ', ',@array;print"$string\n";
Esta construcción está documentada en perldoc -fjoin.
Sin embargo, siempre me ha gustado lo simple $,que lo hace. La variable especial $"es para interpolación y la variable especial $,es para listas. Combine cualquiera de los dos con restricción dinámica de alcance ' local' para evitar efectos en cadena en todo el script:
use feature q(say);use strict;use warnings;my@array= qw/12345/;{local $,=', ';
say @array;# List}
Las variables especiales $,y $"están documentadas en perlvar . La localpalabra clave, y cómo se puede usar para restringir los efectos de alterar el valor de una variable de puntuación global, probablemente se describa mejor en perlsub .
Data :: Dumper es un módulo estándar y se instala junto con Perl. Para obtener una lista de todos los módulos y pragmática estándar, consulte pelrdoc perlmodlib.
shawnhcorey
7
Para inspección / depuración, verifique el Data::Printermódulo. Está destinado a hacer una cosa y solo una cosa:
mostrar variables y objetos de Perl en la pantalla, correctamente formateados (para ser inspeccionados por un humano)
Uso de ejemplo:
useData::Printer;
p @array;# no need to pass references
El código anterior podría generar algo como esto (¡con colores!):
{local $,=', ';print @array}
.print "current directory contains " . join(', ', <*>) . "\n";
Puede utilizar
Data::Dump
:Produce:
fuente
Si está codificando para el tipo de claridad que entendería alguien que recién comienza con Perl, la construcción tradicional de este dice lo que significa, con un alto grado de claridad y legibilidad:
Esta construcción está documentada en
perldoc -f
join
.Sin embargo, siempre me ha gustado lo simple
$,
que lo hace. La variable especial$"
es para interpolación y la variable especial$,
es para listas. Combine cualquiera de los dos con restricción dinámica de alcance 'local
' para evitar efectos en cadena en todo el script:O con $ ,:
Las variables especiales
$,
y$"
están documentadas en perlvar . Lalocal
palabra clave, y cómo se puede usar para restringir los efectos de alterar el valor de una variable de puntuación global, probablemente se describa mejor en perlsub .¡Disfrutar!
fuente
Además, es posible que desee probar Data :: Dumper . Ejemplo:
fuente
pelrdoc perlmodlib
.Para inspección / depuración, verifique el
Data::Printer
módulo. Está destinado a hacer una cosa y solo una cosa:Uso de ejemplo:
El código anterior podría generar algo como esto (¡con colores!):
fuente
libdata-printer-perl
paquete.Puede simplemente
print
hacerlo.Tendrás:
fuente
use warnings;
y ver lo que dice.fuente
Usando
Data::Dumper
:Genera tres estilos de salida diferentes:
fuente
Puede que esto no sea lo que estás buscando, pero aquí hay algo que hice para una tarea:
fuente
También se puede utilizar el mapa, pero a veces es difícil de leer cuando hay muchas cosas en marcha.
fuente
Sin embargo, no he intentado correr abajo. Creo que esta es una forma complicada.
fuente