As you know exactly where you want to match (at the end of string), you can first get length n of a word you are searching for, then using
substr function get substring of length n of the word you are searching in and just do
eq comparison of two strings:
#!perl -l
@array = ('own', 'known', 'owl');
$q = 'unknown';
$longestmatching = '';
$longestn = 0;
for $testword(@array)
{
$n = length($testword);
next if $n <= $longestn;
$substr = substr($q, length($q)-$n, $n);
if($testword eq $substr)
{
$longestmatching = $testword;
$longestn = $n;
}
}
print $longestmatching;
Additionally you can do sort of
@array from longest to shortest string as others mentioned.