package Cz::Cstocs::Getopt; use strict; use Cz::Cstocs; use Getopt::Long; sub usage { print_version(); print STDERR <{$key}; ### print "Key $key -> $value\n"; $getopt_config_hashref->{$key} = \$options{$value} unless ref $value; } my %getopt_config = ( 'null' => sub { $options{'fillstring'} = ''; }, 'fillstring=s' => \$options{'fillstring'}, 'nofillstring' => sub { $options{'nofillstring'} = 1 }, 'usefillstring' => sub { $options{'nofillstring'} = 0 }, 'onebyone' => sub { $options{'one_by_one'} = 1; }, 'onebymore' => sub { $options{'one_by_one'} = 0; }, 'noaccent', sub { $options{'use_accent'} = 0; }, 'nochange', sub { $options{'use_accent'} = 0; }, 'dir=s' => \$options{'cstocsdir'}, 'inputencoding=s' => \$options{'inputenc'}, 'outputencoding=s' => \$options{'outputenc'}, 'help' => \&usage, 'version' => sub { print_version(); exit 0; }, 'debug' => sub { $Cz::Cstocs::DEBUG = 1; }, %$getopt_config_hashref ); if (grep { /--/ } @ARGV) { Getopt::Long::GetOptions(%getopt_config); } elsif (@ARGV < 2) { usage(); } my ($inputenc, $outputenc); if (defined $options{'inputenc'}) { $inputenc = $options{'inputenc'}; delete $options{'inputenc'}; } else { $inputenc = shift @ARGV; } if (defined $options{'outputenc'}) { $outputenc = $options{'outputenc'}; delete $options{'outputenc'}; } else { $outputenc = shift @ARGV; } my $tag; for $tag (keys %options) { delete $options{$tag} unless defined $options{$tag}; } print STDERR "Calling new Cz::Cstocs $inputenc, $outputenc\n" if Cz::Cstocs::DEBUG; my $convert = new Cz::Cstocs $inputenc, $outputenc, %options; $options{'inputenc'} = $inputenc; $options{'outputenc'} = $outputenc; if (wantarray) { return ($convert, $options); } return $convert; } 1;