$fc = 'abcdfoofrobnicatebardefforspambazghi'; #### $re2 = qr/(fo.)(.*?)(ba.)/; push @excerpts, $1 while $fc =~ /($re2)/g; #### 0:foofrobnicatebar 1:forspambaz #### 0:$1='foo' $3='bar' 1:$1='for' $3='baz' #### $%{$excerpts[$i]}{fpart} = $1; $%{$excerpts[$i]}{bpart} = $2;