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; } }