Y a-t-il un facile comment imprimer un tableau Perl avec des virgules entre chaque élément ?
Écrire une boucle for pour le faire est assez facile mais pas tout à fait élégant.... si cela a un sens.
Y a-t-il un facile comment imprimer un tableau Perl avec des virgules entre chaque élément ?
Écrire une boucle for pour le faire est assez facile mais pas tout à fait élégant.... si cela a un sens.
Il suffit d'utiliser join()
:
# assuming @array is your array:
print join(", ", @array);
Il y a plus d'une façon de le faire mais c'est la façon qui ne fait pas que la personne qui maintient le code après vous vous déteste. Oui, perldoc perlvar existe, mais je préfère jeter un coup d'oeil sur "join ', ' @array" plutôt que de consulter perlvar toutes les deux lignes pour comprendre ce que font toutes les variables ésotériques.
@Oesor : C'est pour ça que j'ai dit que c'était sale. Mais bon, en regardant les autres réponses, je ne suis pas vraiment le pire des contrevenants. :)
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 codez pour obtenir le type de clarté qui serait compris par quelqu'un qui débute en Perl, la construction traditionnelle dit ce qu'elle veut dire, avec un haut degré 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é $,
le fait. La variable spéciale $"
sert à l'interpolation, et la variable spéciale $,
est pour les listes. Combinez l'un ou l'autre avec la fonction dynamique de restriction de la portée ' local
' pour éviter d'avoir des effets d'entraînement dans tout le 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 $,
y $"
sont documentés dans perlvar . Le site 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 est probablement mieux décrite dans le document suivant [perlsub](http://perldoc.perl.org/perlsub.html#Temporary-Values-via-local()) .
Profitez-en !
Vous pouvez également essayer Data::Dumper . Exemple :
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
Pour l'inspection/débogage, vérifiez le Data::Printer
module. Il est destiné à faire une chose et une seule :
afficher à l'écran les variables et les objets Perl, correctement formatés (pour être inspecté par un humain)
Exemple d'utilisation :
use Data::Printer;
p @array; # no need to pass references
Le code ci-dessus pourrait donner quelque chose comme ceci (avec des couleurs !):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.