Unicode-Tussle
view release on metacpan or search on metacpan
script/ucsort view on Meta::CPAN
sub main();
sub compile($);
sub dequeue($$);
sub deQ($);
sub deQQ($);
sub flip_fields(_);
sub flip_line(_);
sub get_input();
sub load_options();
sub reorder(@);
sub usage(;$);
#################################################################
##
## ** THIS IS AN UNSUPPORTED, PRE-RELEASE VERSION ONLY **
##
our $VERSION = "0.3";
our %Opt;
#################################################################
$SIG{__DIE__} = sub { confess @_ unless $^S };
main();
exit;
#################################################################
sub main() {
load_options();
my @input = get_input();
my @output = reorder(@input);
if ($Opt{"reverse-output"}) {
print for reverse @output;
} else {
print for @output;
}
}
#################################################################
sub get_input() {
confess "expected list context" unless wantarray();
if (!@ARGV && -t STDIN) {
warn "$0: reading from stdin, type ^D to end, ^C to kill...\n";
}
if (my $incoding = $Opt{"input-encoding"}) {
# need postfix :: to insist is classname not builtin function
open::->import(IN => $incoding);
}
local $/ = "" if $Opt{paragraph};
return <>;
}
#################################################################
sub load_options() {
Getopt::Long::Configure qw[ bundling auto_version ];
my @options = (
# standard options
qw[
help|?
man|m
debug|d
],
# collator constructor options
qw[
backwards-levels=i
collation-level|level|l=i
katakana-before-hiragana
normalization|n=s
preprocess|P=s
override-CJK=s
override-Hangul=s
upper-before-lower|u
variable=s
],
# program specific options
qw[
case-insensitive|insensitive|i
input-encoding|e=s
locale|L=s
paragraph|p
right-to-left|reverse-input
reverse-output|r
reverse-fields|last
],
);
GetOptions(\%Opt => @options) || pod2usage(2);
pod2usage(0) if $Opt{help};
pod2usage(-exitstatus => 0, -verbose => 2) if $Opt{man};
if ($Opt{"case-insensitive"}) {
if ($Opt{"level"}) {
usage "you already specified a level of --level=$Opt{level}";
}
$Opt{"level"} = 1;
}
state $nf_types = {
map { $_, 1 } qw[NFD NFC NFKD NFKC undef prenormalized]
};
( run in 1.188 second using v1.01-cache-2.11-cpan-364913b4093 )