3

以下の方法があればお聞きしたいです。

  1. たとえば、CONST という名前のグループに多数の定数があります。
  2. 変数の配列を入力します。この場合、配列 ARRAY に 3 つの変数があるとします。
  3. 次のコマンドを使用して、3 つの変数すべてを反復処理し、それらが CONST に属しているかどうかを確認します。

foreach my $var(@ARRAY){
    if(lc($var) eq CONST){
     #do something
    }
}

それ以外の:

foreach my $var(@ARRAY){
    if((lc($var) eq const1) or (lc($var) eq const2) or ... or (lc($var) eq constk)){
     #do something
    }
}
4

3 に答える 3

4

定数をハッシュに保存できます。

use warnings;
use strict;

my @arr = qw(a B c);
my %const = map { $_ => 1 } qw(b d);

for my $var (@arr) {
    print "$var\n" if exists $const{lc $var};
}

__END__

B
于 2013-09-06T02:28:33.437 に答える
2

Perl v5.18 が登場し、スマート マッチを実験的な機能として再分類する前に、私はスマート マッチを使用することをお勧めします。

foreach my $var(@ARRAY){
    if (lc($var) ~~ [ CONST ]) {
     #do something
    }
}

でも今はtoolicとfridoを聴いてください。

于 2013-09-06T03:49:48.803 に答える
2

@array私があなたを正しく理解していれば、各項目が個別の定数リストに存在するかどうかを確認したいだけです。grep次のように使用できます。

use strict;
use warnings;

use constant CONST => ( 'foo', 'bar', 'baz', 'quux' );

my @array = ( 'narf', 'poit', 'baz', 'fnarf', 'QUux' );

foreach my $item( @array ) {
    print "$item is in CONST\n" if grep { $_ eq lc $item } CONST;
}

出力:

baz is in CONST 
QUux is in CONST
于 2013-09-06T02:24:13.520 に答える