$/ = '>or'; sub{$h{$1} = $2 if /(\d+)\n\n(\w+)/}->() foreach ; foreach (sort { $a<=>$b } keys %h){ print ">or$_\n\n$h{$_}\n\n"; } __DATA__ >or3 agagatgatagat >or10 aacctttagtag >or1 gtatatatata >or2 tactacatgagg #### >or1 gtatatatata >or2 tactacatgagg >or3 agagatgatagat >or10 aacctttagtag