You could try something like the following. Its heavily commented as you say you just started out in Perl.
use strict;
# Put some phrases in an array for us to test
my @phrases = (" APIblahblah", "blah APINblah", "blahUWI .");
# Match on each phrase
my $phrase;
foreach $phrase (@phrases) {
# Do a match - note the brackets around the entire expression.
# Brackets are used as a memory
# See a Regular Exp guide for more info
if ($phrase =~ m/(\bAPI|APIN|UWI\s*\.)/) {
# If it matched we are here... $1 prints the memory of what
# matched inside the brackets. Similarly if there was a
# 2nd set of parentheses $2 would contain their match etc.
print "Phrase: $phrase, matched on: $1\n";
# Rather than printing it here you could call your sub...
# e.g.
# somesub($1);
}
}
Do note that the phrase "blah APINblah" will match on API not APIN. However the phrase "blahAPINblah" will only match on APIN. This is due to the word boundary. You might want to take this into account in your regex?
Good luck, Arun