YAL038W 1.1 2.4 4.1 YCL040W 1.1 1.6 1.8 9.11 0.0402128119838095 #### %hash = ('YAL038W' => [1.1, 2.4, 4.1], 'YCL040W' => [1.1, 1.6, 1.8, 9.11, 0.0402128119838095], ...); #### my $cur_identifier = ''; chomp $line; foreach my $element (split /\s+/, $line) { if ($element !~ /\d+(?:\.\d+)?/) { # matches int or float numbers $cur_identifier = $element; } else { push @{$hash{$cur_identifier}}, $element; } }