Je garde l'impression que mon hachage comme nombre de seaux / # alloué. Comment puis-je imprimer le contenu de mon hash? Sans l'aide d'une boucle while serait plus préférable (ex: une ligne serait le mieux)
Réponses
Trop de publicités?Data::Dumper est votre ami.
use Data::Dumper;
my %hash = ('abc' => 123, 'def' => [4,5,6]);
print Dumper(\%hash);
seront de sortie
$VAR1 = {
'def' => [
4,
5,
6
],
'abc' => 123
};
À des fins de débogage, je vais souvent utiliser YAML
.
use strict;
use warnings;
use YAML;
my %variable = ('abc' => 123, 'def' => [4,5,6]);
print "# %variable\n", Dump \%variable;
Résultats:
# %variable
---
abc: 123
def:
- 4
- 5
- 6
D'autres fois, je vais utiliser Data::Dump
. Vous n'avez pas besoin de définir autant de variables pour l'obtenir à la sortie dans un beau format que vous faites pour Data::Dumper
.
use Data::Dump = 'dump';
print dump(\%variable), "\n";
{ abc => 123, def => [4, 5, 6] }
Plus récemment, j'ai été en utilisant Data::Printer
pour le débogage.
use Data::Printer;
p %variable;
{
abc 123,
def [
[0] 4,
[1] 5,
[2] 6
]
}
( Le résultat peut être beaucoup plus coloré sur un terminal )
Contrairement aux autres exemples que j'ai montré ici, celui-ci est conçu à des fins d'affichage uniquement. Qui se montre de plus en plus facilement si vous videz la structure de l'égalité de variable ou d'un objet.
use strict;
use warnings;
use MTie::Hash;
use Data::Printer;
my $h = tie my %h, "Tie::StdHash";
@h{'a'..'d'}='A'..'D';
p %h;
print "\n";
p $h;
{
a "A",
b "B",
c "C",
d "D"
} (tied to Tie::StdHash)
Tie::StdHash {
public methods (9) : CLEAR, DELETE, EXISTS, FETCH, FIRSTKEY, NEXTKEY, SCALAR, STORE, TIEHASH
private methods (0)
internals: {
a "A",
b "B",
c "C",
d "D"
}
}