tipos print declaracion datos array perl

print - Manera fácil de imprimir matriz Perl?(con un poco de formateo)



print array perl (11)

¿Hay alguna manera fácil de imprimir una matriz Perl con comas entre cada elemento?

Escribir un bucle para hacerlo es bastante fácil pero no del todo elegante ... si tiene sentido.


Además, es posible que desee probar Data::Dumper . Ejemplo:

use Data::Dumper; # simple procedural interface print Dumper($foo, $bar);


Aunque no he intentado correr más abajo. Creo que esta es una forma difícil.

map{print $_;} @array;


Para la inspección / depuración, verifique el módulo Data::Printer . Está destinado a hacer una cosa y una sola cosa:

mostrar las variables y objetos de Perl en la pantalla, formateados correctamente (para ser inspeccionados por un humano)

Ejemplo de uso:

use Data::Printer; p @array; # no need to pass references

El código anterior podría generar algo como esto (¡con colores!):

[ [0] "a", [1] "b", [2] undef, [3] "c", ]


Puede que esto no sea lo que estás buscando, pero esto es algo que hice para una tarea:

$" = ", "; print "@ArrayName/n";


Puedes usar Data::Dump :

use Data::Dump qw(dump); my @a = (1, [2, 3], {4 => 5}); dump(@a);

Produce:

"(1, [2, 3], { 4 => 5 })"


Si está codificando para el tipo de claridad que sería entendido por alguien que recién está empezando con Perl, la construcción tradicional 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 -f join() .

Sin embargo, siempre me ha gustado lo simple que $, hace. La variable especial $" es para interpolación, y la variable especial $, es para listas. Combine cualquiera de ellas con '' local '' restrictivo de alcance dinámico para evitar tener efectos dominantes en todo el script:

use 5.012_002; use strict; use warnings; my @array = qw/ 1 2 3 4 5 /; { local $" = '', ''; print "@array/n"; # Interpolation. }

O con $ ,:

use feature q(say); use strict; use warnings; my @array = qw/ 1 2 3 4 5 /; { local $, = '', ''; say @array; # List }

Las variables especiales $, y $" están documentadas en perlvar . La palabra clave local 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!


Simplemente puede print .

@a = qw(abc def hij); print "@a";

Tendrás:

abc def hij


También se puede usar el mapa, pero a veces es difícil de leer cuando hay muchas cosas en juego.

map{ print "element $_/n" } @array;


Usando Data::Dumper :

use strict; use Data::Dumper; my $GRANTstr = ''SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE, TRIGGER''; $GRANTstr =~ s/, /,/g; my @GRANTs = split /,/ , $GRANTstr; print Dumper(@GRANTs) . "===/n/n"; print Dumper(/@GRANTs) . "===/n/n"; print Data::Dumper->Dump([/@GRANTs], [qw(GRANTs)]);

Genera tres estilos de salida diferentes:

$VAR1 = ''SELECT''; $VAR2 = ''INSERT''; $VAR3 = ''UPDATE''; $VAR4 = ''DELETE''; $VAR5 = ''LOCK TABLES''; $VAR6 = ''EXECUTE''; $VAR7 = ''TRIGGER''; === $VAR1 = [ ''SELECT'', ''INSERT'', ''UPDATE'', ''DELETE'', ''LOCK TABLES'', ''EXECUTE'', ''TRIGGER'' ]; === $GRANTs = [ ''SELECT'', ''INSERT'', ''UPDATE'', ''DELETE'', ''LOCK TABLES'', ''EXECUTE'', ''TRIGGER'' ];


Solo usa join() :

# assuming @array is your array: print join(", ", @array);


# better than Dumper --you''re ready for the WWW.... use JSON::XS; print encode_json /@some_array