3

が与えられた場合、がその中array @Aにあるかどうかを確認したいと思いelement $Bます。1つの方法はこれを言うことです:

Foreach $element (@A){
    if($element eq $B){
        print "$B is in array A";
    }
}

しかし、Perlに関しては、私は常に最もエレガントな方法を考えています。そして、これは私が考えていることです:Aを変数文字列に変換して使用する場合、配列AにBが含まれているかどうかを確認する方法はありますか?

index(@A,$B)=>0

それは可能ですか?

4

3 に答える 3

13

要素が配列に存在するかどうかを調べる方法はたくさんあります。

  1. foreach の使用

    foreach my $element (@a) {
        if($element eq $b) {
           # do something             
           last;
        }
    }
    
  2. Grep の使用:

    my $found = grep { $_ eq $b } @a;
    
  3. List::Utilモジュールの使用

    use List::Util qw(first); 
    
    my $found = first { $_ eq $b } @a;
    
  4. スライスによって初期化されたハッシュの使用

    my %check;
    @check{@a} = ();
    
    my $found = exists $check{$b};
    
  5. マップによって初期化されたハッシュの使用

    my %check = map { $_ => 1 } @a;
    
    my $found = $check{$b};
    
于 2012-04-20T05:49:27.773 に答える
6
use 5.10.1;

$B ~~ @A and say '$B in @A';
于 2012-04-20T04:56:23.613 に答える
0
use List::AllUtils qw/ any /;
print "\@A contains $B" if any { $B eq $_ } @A;
于 2012-04-20T05:51:14.490 に答える