나는 펄에서 해시를 배우려고하는 간단한 스크립트를 가지고있다.Perl의 each()가 두 번째로 전체 해시를 반복하지 않는 이유는 무엇입니까?
#!/usr/bin/perl
my %set = (
-a => 'aaa',
-b => 'bbb',
-c => 'ccc',
-d => 'ddd',
-e => 'eee',
-f => 'fff',
-g => 'ggg'
);
print "Iterate up to ggg...\n";
while (my ($key, $val) = each %set) {
print "$key -> $val \n";
last if ($val eq 'ggg');
}
print "\n";
print "Iterate All...\n";
while (my ($key, $val) = each %set) {
print "$key -> $val \n";
}
print "\n";
나는 출력에 의해 놀랜다 : -
Iterate upto ggg...
-a -> aaa
-c -> ccc
-g -> ggg
Iterate All...
-f -> fff
-e -> eee
-d -> ddd
-b -> bbb
내가 처음 출력은 내부 순서에 따라 'N'요소가 될 수 있도록 키가 해시 이해합니다. 그런데 왜 나중에 배열을 반복 할 수 없습니까? 뭐가 문제 야 ?
덕분에,
감사를 반복하는 코드에 키 % 설정을 사용할 수 있습니다. BTW, '각'을 처음부터 다시 설정할 수 있습니까? –
"% hash = % hash"가 작동하는 것 같습니다. – jrockway
(perlfaq4는 void 컨텍스트에서 해시의 "keys"를 호출하는 것을 제안하므로 불필요한 복사를 피할 수 있습니다.) – jrockway