use strict; use warnings; my ($inf,$outf)= @ARGV; $inf or die "Must have a file to process\n" ; $outf or $outf= $inf.".utf8"; open my $in, "<:encoding(utf16)", $inf or die "Can't open '$inf':$!"; open my $out, ">:utf8", $outf or die "Can't write '$outf':$!"; local $/; # slurp mode! print {$out} <$in> # text or die "Failed to convert file:$!"; close $in or die "Something weird happened closing '$inf': $!"; close $out or die "Failed to close '$outf', file is probably corrupted: $!"; #### perl -pe "BEGIN {binmode STDIN, ':encoding(utf16)'; binmode STDOUT, ':utf8'}"