/ / Como é possível imprimir valores de hashes aninhados no Perl? - perl

Como se pode imprimir valores de hashes aninhados em Perl? - perl

$dict{"one"}=1;
print %dict;

Isto irá imprimir

Um 1

para o terminal. Mas e se meu código tiver um dicionário hash em um dicionário hash assim:

my %dict;
$dict{"1"}{"1"}=2;

print %dict;

Isso dá a saída:

1HASH(0xb1db78)

Mesmo quando eu mudo a última linha para

print $dict{"1"};

A saída é:

HASH (0x13ccb78)

Como posso obter o conteúdo do dicionário hash em vez do local de referência?

Respostas:

3 para resposta № 1

%dict["one"]=1; << isso está errado

deveria ser $dict{"one"}=1;

Você deve ter algo como abaixo. Atenção: este é um código não testado, mas você entendeu o que estou tentando dizer:

#!/usr/bin/perl -w

use strict;
use Data::Dumper;

my %dict;
$dict{"1"}{"1"}=2;
$dict{"2"}{"2"}=3;

#print Dumper(%dict);

foreach my $keys ( keys %dict )
{
print "$keys : ";
foreach my $keys2 ( keys %{ $dict{keys} } )
{
print "$keys2 = $dict{keys}{$keys2} n" ;
}
print "n";
}

7 para resposta № 2

Se você quiser toda a estrutura, use o núcleo Data::Dumper módulo.

use strict;
use warnings;

use Data::Dumper;

my %hash;
$hash{1}{1} = 2;

print Dumper( %hash );

Saídas:

$VAR1 = {
"1" => {
"1" => 2
}
};

Se você deseja trabalhar com estruturas aninhadas no Perl (além de qualquer coisa trivial), precisará aprender sobre referências. Se você está familiarizado com os ponteiros, está no meio do caminho.

Os melhores recursos estão nos documentos oficiais: