#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %hash; while (my $line = ) { chomp $line; my ($number, $description) = split /\s/, $line, 2; push @{$hash{$description}}, $number; } print Dumper \%hash; __DATA__ 00001 Description1 00002 Description2 00003 Description1