in reply to formatting help

I've made a couple of assumptions in my answer.

  1. Your data has no embedded commas (if it has you'll need to look at Text::CSV_XS).
  2. You are using columns 0, 1 and 2 from the data. You can adjust this in the line with the call to split.

Here's the code:

open(DAT, 'file.dat') or die "Can't open file.dat: $!\n"; my %data; while (<DAT>) { 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";

Basically I'm building up a hash where the key is grouping column and the value is an array of co-ordinates. Having read the whole file and built up the hash, I then iterate over the hash again and print out hte values.

--
<http://www.dave.org.uk>

European Perl Conference - Sept 22/24 2000
<http://www.yapc.org/Europe/>