Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/
W języku programowania Perl czasami występuje konieczność wydrukować zawartość mieszania.
W języku programowania Perl czasami występuje konieczność wydrukować zawartość mieszania.
Na przykład, istnieje hash %h
o następującej treści:
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
W zależności od tego, co jest wymagane, istnieje kilka różnych sposobów, jak to możliwe wydrukować hesh.
Data::Dumper
W przypadku, gdy trzeba szybko sprawdzić, co znajduje się w хеше, to dla tego
wygodny w użyciu moduł Data::Dumper
. To może się przydać
w trakcie opracowywania lub debugowania programu.
Oto przykład kodu:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
print Dumper \%h;
Oto co wyświetla ten program:
$VAR1 = {
'Bob' => 'yellow',
'Alice' => 'silver',
'John' => 'red'
};
Hesh przechowuje w sobie nie uporządkowane pary wartości. Różne uruchamianie programu wyświetli pary w różnym porządku.
print
A co się stanie, jeśli po prostu przekazać hash w print
?
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
print %h;
Program wyświetla jedną linię do następującego:
JohnredBobyellowAlicesilver
Widać, że w tym przypadku print
wyprowadził na ekran płynnie wszystkie pary klucz-wartość z mieszania.
Hesh przechowuje w sobie nie uporządkowane pary wartości. Różne uruchomienia programu będą wydawać różne wnioski.
print
i zmienna $,
Jeśli po prostu określić print %h;
, to wydrukuje wszystkie pary klucz-wartość płynnie.
Można zapytać perl wstawić jakiś znak między elementami. Na przykład,
znak nowej linii \n
.
Do tego trzeba umieścić ten symbol w specjalną zmienną $,
. Oto kod:
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
$, = "\n";
print %h;
Jeden z możliwych wyników działania programu (dane w хеше nie są uporządkowane, więc różne starty będą wyprowadzać pary w różnej kolejności):
Bob
yellow
Alice
silver
John
red
Ale sposób ten należy stosować ostrożnie. Zmienna $,
— globalna. Jeśli
można ją zmienia, to zmienia się dla całego programu. W niektórych sytuacjach
to ma sens, albo w ogóle nie używać w taki sposób albo zapisać wartość
tej zmiennej tymczasowej zmiennej, a po print
odzyskać w niej wartość,
na przykład w taki sposób:
#!/usr/bin/perl
use strict;
use warnings;
my %h = (
John => 'red',
Alice => 'silver',
Bob => 'yellow',
);
my $saved = $,;
$, = "\n";
print %h;
$, = $saved;
Najbardziej wydajny i elastyczny sposób jak wyświetlić zawartość mieszania na ekran — to przejść po wszystkich wartości w хеше i wyprowadzić na ekran w postaci jak trzeba. Oto jeden z przykładów jak można to zrobić:
#!/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}";
}
Wyjście programu jest zawsze jeden i ten sam:
Alice silver
Bob yellow
John red
Dla par wartości w хеше kolejność неопределен, ale w tym programie jest używany sort
do
aby wyświetlić klucze w kolejności alfabetycznej.