#!/usr/bin/perl -w
use strict;
my %H;
while (<DATA>) {
/^(\d\d\d)-(\d\d\d),(\w\w),(.*)/
or die "Can't parse $_";
push @{$H{$1}{$3}{head}}, $2;
push @{$H{$1}{$3}{tail}}, grep{$_} split ':', $4;
}
foreach my $k1 (sort {$a <=> $b} keys %H) {
print "$k1\n";
foreach my $k2 (sort {$a <=> $b} keys %{$H{$k1}}) {
print "$k2\n";
my $tail = join ':', sort {$a <=> $b} @{$H{$k1}{$k2}{tail}};
foreach my $head (sort {$a <=> $b} @{$H{$k1}{$k2}{head}}) {
print "$head|$tail\n";
}
}
}
__DATA__
100-233,MA,150:250
100-344,MA,350:
200-400,ER,
200-300,ER,576