펄은 내 프로그램에서 의사 hashs 사용에 대한 저를 경고한다 :왜 Perl은 가상 해시 사용에 대해 경고합니까?
의사 해시가되지 않습니다
그 의사 hashs를 사용하지 않는, 그래서 나는 다음과 같은 코드를 변환하려면 어떻게
foreach my $hash (@arrayOfHash) {
print keys %{$hash};
}
펄은 내 프로그램에서 의사 hashs 사용에 대한 저를 경고한다 :왜 Perl은 가상 해시 사용에 대해 경고합니까?
의사 해시가되지 않습니다
그 의사 hashs를 사용하지 않는, 그래서 나는 다음과 같은 코드를 변환하려면 어떻게
foreach my $hash (@arrayOfHash) {
print keys %{$hash};
}
문제는 해당 코드에 없습니다. 문제는 @arrayOfHash
에 해시 설명이 아니라 배열 참조가 실제로 포함되어 있다는 것입니다. 어떤 이유로 당신이 @arrayOfHash
를 해결할 수없는 경우
, 당신은 수행하여 해결할 수 있습니다
이foreach my $hash (@arrayOfHash) {
my %hash = @$hash;
print keys %hash;
}
당신은 항상 전체 예제 코드를 게시해야합니다 ..... 확실하지
무엇 당신은하고있는 중이지만 배열과 배열 참조 및/또는 해시 및 해시 참조를 혼합하고있을 것입니다. 내가 더 잘 구문을 원하는대로 나는 보통, 참조를 사용하고 나는 일관되게 좋아 :
use strict;
use warnings;
my($arrayrefOfHashrefs) = [
{foo => 'bar',
bar => 'baz'},
{Hello => 'world'},
];
foreach my $href (@$arrayrefOfHashrefs) {
print join("\n", keys %$href);
print "\n\n";
}
인쇄됩니다 :
C:\Temp>perl foo.pl
bar
foo
Hello
그것은 그 다음 사용되지 않는 것을 좋은 일입니다. –
"해결 방법"은 우리와 질문자가 정확히 @arrayOfHash에 무엇이 있는지를 알지 못해 조금 관대합니다. 먼저 그것을 알아 낸 다음 그것에 대해 뭔가를하십시오. 귀하의 코드는 한 가지 오류의 경우에만 도움이 될 것입니다. – ysth