dポイントプレゼントキャンペーン実施中!

おせわになります。

Shift-JISで記述したPerlで、ファイル出力をしようとしています。
------------------------------------
#!/usr/local/bin/perl
use encoding 'shiftjis';

$hoge="ほげ"
open(OUT,">file.txt")
binmode OUT;
print OUT $hoge;
close(OUT);
------------------------------------
希望はUTF8での出力なのですが、UTF8Nで出力されてしまいます。
どのようにすればいいのかご教授よろしくお願いします。

A 回答 (1件)

binmode OUT をしないのなら



#!/usr/bin/perl
use strict;
use encoding 'shiftjis';

my $hoge = 'ほげ';

open OUT, '>:encoding(utf8)', 'file.txt' or die $!;

my $bom = "\x{feff}"; #BOM
print OUT $bom;

print OUT $hoge, "\n";
close OUT;

で警告なしにBOMをつけてファイルを作れます。

どうしても binmodeをする必要があるのなら

#!/usr/bin/perl
use strict;
use encoding 'shiftjis';

my $hoge = 'ほげ';

open OUT, '>', 'file.txt' or die $!;
binmode OUT;

my $bom = "\x{feff}"; #BOM
utf8::encode($bom);
print OUT $bom;

utf8::encode($hoge);
print OUT $hoge, "\n";
close OUT;

こんなところですか?
#utf-8フラグは良くわからん
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。
おかげさまでひとつめの方法で無事解決することができました。
なぜそうなるのかはいまいち理解してませんが、おかげで助かりました。

ありがとうございました。

お礼日時:2007/06/07 20:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!