極悪です。
>open(my $FO,">:encoding($opt{t})",$fo) or die;
〜
> open(my $FI,"<:encoding($opt{f})",$fi) or next;
↑これをやってしまうと標準入出力が使えないのでダメです。
#!/usr/local/bin/perl
use strict;
use Encode;
@ARGV or die join("\n",Encode->encodings(":all")),"\n";
use Getopt::Std;
my %opt;
getopts('f:t:',\%opt);
$opt{f} ||= 'CP932';
$opt{t} ||= 'CP932';
binmode STDOUT; # 必要
binmode(STDOUT => ":encoding($opt{t})");
# ダメ
#binmode(ARGV => ":encoding($opt{f})");
#while(<ARGV>){ print $_ }
if(@ARGV){
foreach my $file (@ARGV){
open(FILE,"<:encoding($opt{f})",$file) or next;
print while <FILE>;
close FILE;
}
}else{
binmode(STDIN => ":encoding($opt{f})");
print while <>;
}
__END__
--
FZH01112 at nifty.com
http://hpcgi1.nifty.com/dune/gwiki.pl?