#!/usr/bin/perl -w # History: # v0 - initial version use strict; use Data::Dumper; my %data = (); while (<>){ if ($_ =~ /^;/){ print; next; } my @a = split; if ($a[0] eq "SPKR-INFO"){ push @{ $data{$a[1]}{$a[0]} }, \@a; } else { push @{ $data{$a[1]}{REST} }, \@a; } } sub rttmSort{ my %ht = (SPEAKER => 0, LEXEME => 1, "NON-LEX" => 2); if ($a->[3] == $b->[3]) { if ($a->[0] eq $b->[0]){ $b->[4] <=> $a->[4] ; } else { $ht{$a->[0]} <=> $ht{$b->[0]} ; } } else { $a->[3] <=> $b->[3]; } } foreach my $file(sort (keys %data)){ # print "PRocess $file\n"; my @d; # Speaker Info @d = @{ $data{$file}{"SPKR-INFO"} }; for (my $i=0; $i<@d; $i++){ print join(" ",@{ $d[$i] })."\n"; } if (exists($data{$file}{"REST"})){ @d = @{ $data{$file}{"REST"} }; foreach my $rec(sort rttmSort @{ $data{$file}{"REST"} }){ print join(" ",@$rec)."\n"; } } }