Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/
Na linguagem de programação Perl, por vezes, ocorre a necessidade de imprimir o conteúdo de um hash.
Na linguagem de programação Perl, por vezes, ocorre a necessidade de imprimir o conteúdo de um hash.
Por exemplo, há hash %h
com o seguinte conteúdo:
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
Dependendo do que você deseja, existem algumas maneiras de como você pode imprimir hash.
Data::Dumper
No caso de se pretender ver rapidamente o que está contido na хеше, para
é conveniente usar o módulo Data::Dumper
. Isto pode vir a calhar
durante o desenvolvimento ou a depuração de um programa.
Aqui está um exemplo de código:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
print Dumper \%h;
Isso é o que exibe este programa:
$VAR1 = {
'Bob' => 'yellow',
'Alice' => 'silver',
'John' => 'red'
};
Hash armazena, em si, não organizados pares de valores. Diferente de executar o programa de será a saída do par em uma ordem diferente.
print
E o que vai se basta enviar o hash em print
?
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
print %h;
O programa apresenta uma linha do tipo:
JohnredBobyellowAlicesilver
Visto que neste caso print
tirou na tela juntos todos os pares chave-valor a partir do hash.
Hash armazena, em si, não organizados pares de valores. Diferentes execuções do programa vai dar a diferente conclusão.
print
e a variável $,
Se especificar apenas print %h;
, isso imprimirá todos os pares chave-valor juntos.
Você pode pedir a um perl de inserir uma espécie de símbolo de entre os elementos. Por exemplo,
um caractere de nova linha \n
.
Para isso, você precisa colocar este símbolo em uma variável especial $,
. Aqui está o código:
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
$, = "\n";
print %h;
Um dos possíveis resultados da execução do programa (dados хеше não ordenadas, portanto, diferentes lançamentos de saída pares em ordem diferente):
Bob
yellow
Alice
silver
John
red
Mas este método precisa usar com cuidado. A variável $,
global. Se
você muda, então ele muda para todo o programa. Em algumas situações
faz sentido ou não usar o tal maneira, ou manter o valor
esta variável em uma variável temporária e, depois de print
de retornar o seu valor,
por exemplo, assim:
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
my $saved = $,;
$, = "\n";
print %h;
$, = $saved;
O mais poderoso e flexível, a maneira de como exibir o conteúdo de hash tela — é a passar por todos os valores em хеше e para retirar, na tela da forma como você precisa. Aqui está um exemplo de como isso pode ser feito:
#!/usr/bin/perl
use strict;
use warnings;
use feature qw(say);
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
foreach my $name (sort keys %h) {
say "$name $h{$name}";
}
A saída do programa é sempre a mesma:
Alice silver
Bob yellow
John red
Para pares de valores em хеше ordem indefinido, mas este programa é usado sort
para o
para exibir as chaves em ordem alfabética.