use strict; sub chip{ local($_)=@_; if(/^(\d+ (?: \.\d+)* )? (.+) /x){ my($front) = $1; if(my(@rest) = $2 =~ /(A+) (B*) ,? /gx){ unshift(@rest, $front); grep {$_} @rest}}}