use strict; use warnings; while (<DATA>) { if (/^(\d+\D\d)_(LacZ|pgK|SD|SU)(.*)$/) { print "match: $_"; print ' $1', " is $1\n"; print ' $2', " is $2\n"; print ' $3', " is $3\n"; } else { print "no match: $_"; } } __DATA__ 12774L1_LacZ.SEE.rc_C06_2008-12-01.ab1 12774L1_pgK.Neo.2fw_D06_2008-12-01.ab1 12774L1_SD_B06_2008-12-01.ab1 12774L1_SU_A06_2008-12-01.ab1 foo.bar
prints:
match: 12774L1_LacZ.SEE.rc_C06_2008-12-01.ab1 $1 is 12774L1 $2 is LacZ $3 is .SEE.rc_C06_2008-12-01.ab1 match: 12774L1_pgK.Neo.2fw_D06_2008-12-01.ab1 $1 is 12774L1 $2 is pgK $3 is .Neo.2fw_D06_2008-12-01.ab1 match: 12774L1_SD_B06_2008-12-01.ab1 $1 is 12774L1 $2 is SD $3 is _B06_2008-12-01.ab1 match: 12774L1_SU_A06_2008-12-01.ab1 $1 is 12774L1 $2 is SU $3 is _A06_2008-12-01.ab1 no match: foo.bar
Update: Furthermore, grep properly filters out the "foo.bar" file I injected:
use strict; use warnings; use Data::Dumper; my @files = qw( 12774L1_LacZ.SEE.rc_C06_2008-12-01.ab1 12774L1_pgK.Neo.2fw_D06_2008-12-01.ab1 12774L1_SD_B06_2008-12-01.ab1 12774L1_SU_A06_2008-12-01.ab1 foo.bar ); print Dumper(\@files); @files = grep /^(\d+\D\d)_(LacZ|pgK|SD|SU)(.*)$/,@files; print Dumper(\@files); __END__ $VAR1 = [ '12774L1_LacZ.SEE.rc_C06_2008-12-01.ab1', '12774L1_pgK.Neo.2fw_D06_2008-12-01.ab1', '12774L1_SD_B06_2008-12-01.ab1', '12774L1_SU_A06_2008-12-01.ab1', 'foo.bar' ]; $VAR1 = [ '12774L1_LacZ.SEE.rc_C06_2008-12-01.ab1', '12774L1_pgK.Neo.2fw_D06_2008-12-01.ab1', '12774L1_SD_B06_2008-12-01.ab1', '12774L1_SU_A06_2008-12-01.ab1' ];
In reply to Re^3: mv files from dir1 to dir2
by toolic
in thread mv files from dir1 to dir2
by lomSpace
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |