配列から要素を探す

phpでは、in_array関数を用いて、ある配列に特定の要素が含まれているかを下の例のように簡単に調べる事ができます

<?php
$arr = Array("a", "b" ) ;
var_dump( in_array("a", $arr) ) ;
?>

が、意外に、perlではin_array関数のように指定要素が特定の配列にふくまれているかを調べるような関数がなかったりもします。

perlで指定要素が配列に含まれているかを調べる方法を探すのに意外に時間がかかったので、メモ。

やりかたは、下のように特定の配列を連想配列に一度格納して、特定のキーが定義されているかを調べる。

my @arr = qw/ a b c d e f g h i j k/ ;
my %hash ;
foreach( @arr ) {
        $hash{$_} = 1 ;
}
if( $hash{"a"} )  {
        print "a" ;
}

う〜ん。。。perl連想配列はソートされるから速度的には早いらしいけど、なんか強引すぎて好きではないな・・・配列を一度まわしている時点で、なんか嫌。。。もっと効率的な方法ってないかな・・・