ある要素が配列に含まれているかを調べる一般的な方法は?
Javaなら Collection.contains(Object) 、Rubyなら ary.include?(val) を使うと思いますが、Perlの場合はどうやるのが一般的なのでしたっけ?
スクリプトを書いていて、そういう関数があるのかどうか思い出せず、時間がないので defined関数 を使ってやってしまいました。
注(2009.05.18): この場合は、definedではなく、exists関数を使うべき。
my %hash = map { $_, 1_ } ("APPLE", "BEER", "CANDY"); print "BEER!\n" if defined $hash{"BEER"}; print "no DONUT!\n" unless defined $hash{"DONUT"};
本当はこういう関数があると良いのかも。
sub count { my @a = @_; my $key = pop @a; my $count = grep $_ eq $key, @a; } my @list = ("APPLE", "BEER", "CANDY"); print count(@list, "APPLE"), "\n"; push @list, "BEER"; print count(@list, "BEER"), "\n"; print "BEER!\n" if count(@list, "BEER") > 0;
しかし、ちょっとしたスクリプトで、わざわざ関数を定義するのも大げさな気がします。如何したものでしょう。