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フラグは良くわからん
お礼
さっそくのご回答ありがとうございます。 おかげさまでひとつめの方法で無事解決することができました。 なぜそうなるのかはいまいち理解してませんが、おかげで助かりました。 ありがとうございました。