use strict; while () { #OLDmy ($sign, $num, $den) = m@(-)?(\d+)/?(\d*)@; my ($sign, $num, $den) = m@(-)?(\d+)(?:/(\d+))?@; print "sign:$sign numerator:$num denominator:$den\n"; } __DATA__ 23 -35 -23/43 2/3 5/