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