2016-07-14 20 views
0

下面是實際在perl數組中找到模式的代碼。grep perl array中的多個模式一次

my $isAvailable = grep { $_->[0] eq '12345' } {$filteredTableEntriesMap{$REPORT_PART1}} ; 

,但我想在一個時間

my $isWiuAvailable = grep { $_->[0] eq '12345' }  @{$filteredTableEntriesMap{$REPORT_PART1}} ; 
my $isBsAvailable = grep { $_->[1] eq '6789' } @{$filteredTableEntriesMap{$REPORT_PART1}} ; 

這是地圖如何表示

$VAR1 = { 
     'REPORT PART2' => [], 
     'REPORT PART1' => [ 
           [ 
           '12345', 
           '6789',       
           ], 
           [ 
           '343435', 
           '315', 
           ], 
           [ 
           '00103', 
           '000315', 

           ], 
         ] 

,我會想匹配的兩個指標來搜索兩種模式在索引1和索引2中具有這兩個條目的陣列

謝謝

回答

2

您可以將兩個條件組合成一個表達式。

my @found = grep { $_->[0] eq '12345' && $_->[1] eq '6789' } 
    @{$filteredTableEntriesMap{$REPORT_PART1}}; 

{}grep裏面的東西基本上是一個子程序。只要你想在你的@found結果中保留$_,只要你返回一個真值,你就可以在那裏做多少。