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

后端 未结 3 983
傲寒
傲寒 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:41

    That is exactly what grep is for. Here's a small snippet:

    use strict;
    use warnings;
    
    my $str = "+++123++585+++FOO";
    my $blank = "+++123++585+++XYZ";
    my @array = qw/FOO BAR BAZ/;
    print grep {$str =~ $_} @array, "\n";
    print grep {$blank =~ $_} @array, "\n";
    

    This would just return:

    FOO
    

    grep, reduce and map are what we call higher order functions in FP world, though reduce might be called fold there. Have a look at MJD's Higher Order Perl for more of these.

    • grep
    • map
    • reduce
    • Higher Order Perl

提交回复
热议问题