#!/usr/local/bin/perl -w use strict; my @pattern = ('B.B', 'CB'); my $re = qr/^(.*?)(?:@{[ join "|", map "($_)", @pattern ]})/; foreach (qw(ABCBXBCA APCBXBCAC)){ if(my ($keyword,@match) = /$re/) { my $i = 0; $i++ until defined shift @match; print "String:$_ Pattern:$pattern[$i] KeyWord:$keyword\n"; } }