# 버킷 수 / # 할당으로 해시를 계속 인쇄합니다. 해시의 내용을 어떻게 인쇄합니까?
while루프를 사용하지 않는 것이 가장 좋습니다 (예를 들어, 한 줄짜리 가 가장 좋습니다).
답변
Data :: Dumper 는 당신의 친구입니다.
use Data::Dumper;
my %hash = ('abc' => 123, 'def' => [4,5,6]);
print Dumper(\%hash);출력합니다
$VAR1 = {
          'def' => [
                     4,
                     5,
                     6
                   ],
          'abc' => 123
        };답변
쉬운:
print "$_ $h{$_}\n" for (keys %h);우아하지만 실제로 30 % 더 느립니다 (!) :
while (my ($k,$v)=each %h){print "$k $v\n"}답변
사용하지 않고 인쇄하는 방법 Data::Dumper  
print "@{[%hash]}";답변
디버깅 목적으로 자주 사용 YAML합니다.
use strict;
use warnings;
use YAML;
my %variable = ('abc' => 123, 'def' => [4,5,6]);
print "# %variable\n", Dump \%variable;결과 :
# %variable
---
abc: 123
def:
  - 4
  - 5
  - 6다른 때는 사용하겠습니다 Data::Dump. 변수를 원하는 것보다 멋진 형식으로 출력하기 위해 많은 변수를 설정할 필요는 없습니다 Data::Dumper.
use Data::Dump = 'dump';
print dump(\%variable), "\n";{ abc => 123, def => [4, 5, 6] }더 최근에는 Data::Printer디버깅 에 사용 했습니다.
use Data::Printer;
p %variable;{
    abc   123,
    def   [
        [0] 4,
        [1] 5,
        [2] 6
    ]
}(결과는 터미널에서 훨씬 더 화려한 수 있습니다)
여기에 표시된 다른 예와 달리이 예는 표시 용으로 만 명시 적으로 설계되었습니다. 연결된 변수 또는 객체의 구조를 덤프하면 더 쉽게 나타납니다.
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"
    }
}답변
대답은 해시의 내용에 따라 다릅니다. 간단한 해시를 가지고 있다면
print map { "$_ $h{$_}\n" } keys %h;또는
print "$_ $h{$_}\n" for keys %h;그러나 참조로 채워진 해시가 있으면 해당 참조를 걸고 합리적인 출력을 생성 할 수있는 무언가가 생깁니다. 이러한 참조를 일반적으로 직렬화라고합니다. 다른 스타일을 구현하는 많은 모듈이 있으며, 가장 많이 사용되는 모듈은 다음과 같습니다.
사실로 인해 Data::Dumper핵심 펄 라이브러리의 일부입니다, 아마 가장 인기가있다; 그러나 다른 모듈 중 일부는 제공 할만한 좋은 기능이 있습니다.
답변
답변
루핑 :
foreach(keys %my_hash) { print "$_ / $my_hash{$_}\n"; }기능의
map {print "$_ / $my_hash{$_}\n"; } keys %my_hash;그러나 순전히 우아함을 위해서는 wrang-wrang ‘s를 선택해야합니다. 내 코드의 경우 foreach를 선택합니다. 또는 tetro의 덤퍼 사용.