Existe-t-il un moyen easy d’imprimer un tableau Perl avec des virgules entre chaque élément?
Écrire une boucle pour le faire est assez facile mais pas tout à fait élégant ... si cela a du sens.
Il suffit d'utiliser join()
:
# assuming @array is your array:
print join(", ", @array);
Vous pouvez utiliser Data::Dump
:
use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);
Produit:
"(1, [2, 3], { 4 => 5 })"
Si vous définissez un type de clarté compréhensible pour quelqu'un qui commence tout juste avec Perl, cette construction traditionnelle indique ce qu'elle signifie, avec un degré élevé de clarté et de lisibilité:
$string = join ', ', @array;
print "$string\n";
Cette construction est documentée dans perldoc -f
join
.
Cependant, j'ai toujours aimé la simplicité avec laquelle $,
le rend. La variable spéciale $"
sert à l'interpolation et la variable spéciale $,
à des listes. Associez l'une ou l'autre de ces options avec 'local
', qui limite le champ d'application de manière dynamique, pour éviter les effets d'entraînement tout au long du script:
use 5.012_002;
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $" = ', ';
print "@array\n"; # Interpolation.
}
OU avec $ ,:
use feature q(say);
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $, = ', ';
say @array; # List
}
Les variables spéciales $,
et $"
sont documentées dans perlvar . Le mot clé local
et la façon dont il peut être utilisé pour limiter les effets de la modification de la valeur d'une variable de ponctuation globale sont probablement mieux décrits dans perlsub .
Prendre plaisir!
Aussi, vous voudrez peut-être essayer Data :: Dumper . Exemple:
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
Pour l'inspection/le débogage, vérifiez le module Data::Printer
. Il est censé faire une chose et une seule chose:
afficher les variables et les objets Perl à l'écran, correctement formatés (à inspecter par un humain)
Exemple d'utilisation:
use Data::Printer;
p @array; # no need to pass references
Le code ci-dessus peut produire quelque chose comme ceci (avec des couleurs!):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
Vous pouvez simplement print
le.
@a = qw(abc def hij);
print "@a";
Vous aurez:
abc def hij
# better than Dumper --you're ready for the WWW....
use JSON::XS;
print encode_json \@some_array
Utiliser 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)]);
Génère trois styles de sortie différents:
$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'
];
Ce n'est peut-être pas ce que vous recherchez, mais voici quelque chose que j'ai fait pour un travail
$" = ", ";
print "@ArrayName\n";