Blame bin/ucmsort

Packit d0f5c2
#!/usr/local/bin/perl
Packit d0f5c2
#
Packit d0f5c2
# $Id: ucmsort,v 2.2 2006/05/03 18:24:10 dankogai Exp $
Packit d0f5c2
#
Packit d0f5c2
use strict;
Packit d0f5c2
my @lines;
Packit d0f5c2
my ($head, $tail);
Packit d0f5c2
while (<>){
Packit d0f5c2
    unless (m/^
Packit d0f5c2
        unless(@lines){
Packit d0f5c2
        $head .= $_;
Packit d0f5c2
    }else{ 
Packit d0f5c2
        $tail .= $_;
Packit d0f5c2
    }
Packit d0f5c2
    next;
Packit d0f5c2
    }
Packit d0f5c2
    chomp;
Packit d0f5c2
    my @words = split;
Packit d0f5c2
    my $u = shift @words;
Packit d0f5c2
    $u =~ s/^<U//o; $u =~ s/>.*//o;
Packit d0f5c2
    push @lines,[ $u, @words ];
Packit d0f5c2
}
Packit d0f5c2
Packit d0f5c2
print $head;
Packit d0f5c2
for (sort {
Packit d0f5c2
    hex($a->[0]) <=> hex($b->[0]) # Unicode descending order
Packit d0f5c2
    or $a->[2] cmp $b->[2] # fallback descending order
Packit d0f5c2
    or $a->[1] cmp $b->[1] # Encoding descending order
Packit d0f5c2
    }
Packit d0f5c2
     @lines) {
Packit d0f5c2
    my $u = shift @$_;
Packit d0f5c2
    print join(" " => "<U$u>", @$_), "\n";
Packit d0f5c2
}
Packit d0f5c2
print $tail;
Packit d0f5c2
__END__