THAETURQU .LLL..RRR HA,AE JURYATAUTIOPW .LLL...LL.RRR UR,RY,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,QN,NQ,MN,NH,HF #### THAETURQU .LLL..RRR HA JURYATAUTIOPW .LLL...LL.RRR UR,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,NQ,MN,HF #### #!/usr/bin/perl use strict; use warnings; my @patterns = qw( .LLL LLLL .RRR RRRR LL ); chomp( my @file = ); for my $pat (@patterns) { print("pattern = $pat\n"); our $string; our @matches; my $re = do { use re 'eval'; qr/ \Q$pat\E (?{ my $start = $-[0]; my $end = $+[0]; push @matches, substr($string, $start, $end - $start); }) (?!) /x }; for my $line (@file) { (local $string, my $mask) = split(/\s+/, $line, 2); local @matches; $mask =~ $re; local $" = ","; print "$line\t@matches\n"; } print("\n"); } __DATA__ THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL #### pattern = .LLL THAETURQU .LLL..RRR THAE JURYATAUTIOPW .LLL...LL.RRR JURY TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL OWQN,WMNH pattern = LLLL THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQNQ,MNHF pattern = .RRR THAETURQU .LLL..RRR URQU JURYATAUTIOPW .LLL...LL.RRR IOPW TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL pattern = RRRR THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL pattern = LL THAETURQU .LLL..RRR HA,AE JURYATAUTIOPW .LLL...LL.RRR UR,RY,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,QN,NQ,UT,MN,NH,HF