2012-11-05 4 views
6

grep関数を使用して値のリストをフィルタリングし、フィルタリングされたリストへの参照をハッシュに格納したいと考えています。私は、%$stuffハッシュであることをしようとすると、Perlのgrepが返すリストへの参照を取得するには?

のみ
my $allValues = [ 
    'a', 
    'unwanted value', 
    'b', 
    'c', 
]; 

$stuff = { 
    'values' => grep { $_ ne 'unwanted value' } @$allValues 
}; 

::私は後だことのようなものである

 
$VAR1 = { 
      'b' => 'c', 
      'values' => 'a' 
     }; 

ているので、私の代わりに無名ハッシュ作成のコードを修正する方法はありますget:

 
$VAR1 = { 
      'values' => [ 
         'a', 
         'b', 
         'c' 
         ] 
     }; 

ローカル変数を作成したり、サブルーチン(つまり、すべてインライン)を呼び出してはいけませんか?

+1

あなたはPerlでリストへの参照を持つことができません。配列への参照のみができます。 –

答えて

11

はしてみてください:

$stuff = { 
    'values' => [ grep { $_ ne 'unwanted value' } @$allValues ] 
}; 
+1

パーフェクト!迅速な答えをありがとう。 –

+0

これはどのように機能しますか?この解決策は単にgrepの結果への参照を返すか、アレイ全体のメモリを再割り当てしますか?私はパフォーマンスが心配です。 – PolinaC