open(DAT, 'file.dat') or die "Can't open file.dat: $!\n"; my %data; while () { chomp; my ($key, @coords) = (split(/,/))[2, 0, 1]; push @{$data{$key}}, \@coords; } foreach (keys %data) { print "$_\n"; local $" = ', '; foreach my $coord (@{$data{$_}}) { print "@$coord\n"; } print "end\n"; } print "end\n";