This code is funny.  It saves the MatchData object in variable 'match', but doesn't use it.  Instead, it retrieves the data from $1.  So what's the point of saving the return value anyway?