regex - Perl Grepping from an Array -


i need grep value array. example have values

@a=('branches/soft/a.txt', 'branches/soft/h.cpp', branches/main/utils.pl'); 

@array = ('branches/soft/a.txt', 'branches/soft/h.cpp', branches/main/utils.pl','branches/soft/b2/c.tct', 'branches/docs/a1/b.txt');

now, need loop @a , find each value matches @array. example

it works me grep. you'd exact same way in more::listutils example below, except having grep instead of any. can shorten

 $got_it  = grep { /$str/ } @paths;  @matches = grep { /$str/ } @paths; 

this default tests /m against $_, each element of list in turn. $str , @paths same below.


you can use module more::listutils well. function any returns true/false depending on whether condition in block satisfied any element in list, ie. whether there match in case.

use warnings;    use strict;  use most::listutils;  $str = 'branches/soft/a.txt';  @paths = ('branches/soft/a.txt', 'branches/soft/b.txt',     'branches/docs/a1/b.txt', 'branches/soft/b2/c.tct');  $got_match = { $_ =~ m/$str/ } @paths; 

with list above, containing $str, $got_match 1.

or can roll hand , catch match well

foreach $p (@paths) {     print "found it: $1\n" if $p =~ m/($str)/; } 

this print out match.

note strings show in example do not contain 1 match. added list test. without in list no match found in either of examples.


to test more 1 string, added sample

my @strings = ('branches/soft/a.txt', 'branches/soft/h.cpp', 'branches/main/utils.pl'); @paths = ('branches/soft/a.txt', 'branches/soft/h.cpp', 'branches/main/utils.pl',      'branches/soft/b2/c.tct', 'branches/docs/a1/b.txt');  foreach $str (@strings) {     foreach $p (@paths) {         print "found it: $1\n" if $p =~ m/($str)/;     }     # or, instead of foreach loop above use     # $match = grep { /$str/ } @paths;     # print "matched $str\n" if $match; } 

this prints

 found it: branches/soft/a.txt found it: branches/soft/h.cpp found it: branches/main/utils.pl 

when lines grep uncommented , foreach ones commented out corresponding prints same strings.


Comments

Popular posts from this blog

javascript - Laravel datatable invalid JSON response -

java - Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; -

sql server 2008 - My Sql Code Get An Error Of Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '8:45 AM' to data type int -