##
use List::Util qw/ reduce /;
print reduce { common_suffix($a, $b) } qw/ redball greenball stall /;
__END__
all
####
sub common_suffix {
$_[0] =~ m[
(?>
(.+)
)
(?(?{ not is_suffix($_[1], $^N) })
(?!)
)
]xs;
return $1;
}