作者: dune
日時: 2004/1/25(03:13)
極悪です。

>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?