$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:
- Tutorial de referência de Perl
- Matrizes Perl de matrizes
- Livro de receitas de estruturas de dados Perl