Perl Checking if a scalar contains one of the elements in an array

后端 未结 3 1065
傲寒
傲寒 2021-01-25 04:49

I have an array

my @array = qw/FOO BAR BAZ/;

and a scalar read from a file containing data like



        
3条回答
  •  星月不相逢
    2021-01-25 05:50

    Yes, there is far better way. You can construct regular expression. It will be alternatives of fixed strings which is fortunately translated into trie (Aho-Corasick) which leads into linear search time. It is the most efficient way at all.

    my @array = qw/FOO BAR BAZ/;
    my $re = join '|', map quotemeta, @array;
    $re = qr/$re/;
    
    for my $string (@strings) {
      if ($string =~ $re) {
        ...
      }
    }
    

提交回复
热议问题