use strict; use warnings; use Data::Dumper; my @array; while () { my ($time,$id) = /([\d:.]+)\D+(\d+)/; push @array, "$id:$time"; } print Dumper \@array; __DATA__ 00:00:00.20 - blah blah perl him me it they 0223503 blah blah blah 00:00:00.30 - blah blah perl him me it they 0223504 blah blah blah #### while () { push @array, join('#',(split)[9, 0]); } #### my @array = map join('#',(split)[9, 0]), ;