sub name_parse { local $_ = shift; m/^>>/ and warn 'Error message' and return(); m/^([><])/ and return ($1, substr($_, 1)); m/^\|/ and print 'pipefront'; m/\|$/ and print 'pipeend'; return $_; } my @mulch = name_parse($filename);