in reply to Returning _which_ pattern matched...?
No, it's quite simple. After the match, the variable $1 will be set to whatever matched your pattern -- which will be one of the three. Likewise for $2, etc. for later () sub-patterns. You'll still have to do something with that information, of course.
In Section Seekers of Perl Wisdom