perl 함수 map
을 사용하여 다음 작업을 수행하는 방법을 찾고 있습니다. 해시가 주어 졌으므로 쌍 (키, 값)이며, 값은 지정된 매개 변수와 같거나 일치합니다.맵을 사용하여 지정된 값과 일치하는 (키, 값) 해시 세트를 추출합니다.
예를 들어, value = failed
인 경우 (키, 값) 쌍을 추출하고 싶지만 표현식 (즉, A 또는 REGEX로 시작하는 문자열) 일 수도 있습니다. 그래서 결과 값으로 값과 일치하는 키의 테이블뿐만 아니라 해시를 원합니다.
my %strings = (
bla => "success",
ble => "failed",
bli => "failed",
foo => "success",
blo => "failed",
bar => "failed",
blu => "success"
);
my %failed_s =();
while (my ($k, $v) = each %strings) {
if ($v eq 'failed') {$failed_s{$k} = $v};
};
나는이 일을 몇 가지 방법을 시도했지만 좋은 결과가 그래서 나는 등,
my %failed_s =
map { { $_ => $strings{$_} }
if ($strings{$_}./failed/) }
keys %strings;
my %failed_s =
map { ($strings{$_} eq 'failed') &&
($_, $strings{$_}) }
keys %strings;
print "Dumper \%failed_s: \n" . Dumper(\%failed_s);
을 참조, 허식, 결과에 대한 혼란스러워지고있어 생각없이 그것은 가능 여부되지 수 있습니다 이 경우지도를 사용하는 것이 효과적이지만 그 이유를 아는 데 도움이됩니다.
펄의'grep'을 사용합니다. – knittl
@knittl 시도해 보았습니다 만, 내가 그것을 보게되어 기쁘다는 예 또는 아이디어가 있다면 그것을 잘 작동시키는 법을 알 수 없었습니다! – Thomas
@ mob의 [answer] (http://stackoverflow.com/questions/5597542/using-map-to-extract-hash-set-of-key-value-matching-specified-value/5597656#5597656)를 참조하십시오. –