cp932とsjisではエンコーディングは似ているけど、文字セットが異なるので、次のような方法でもありかな?
#!/usr/local/bin/perl use strict; use warnings; use encoding qw/cp932/; #←ポイント use Encode; main(@ARGV); sub main { my ($str) = @_; return decode('sjis', encode('sjis',$str)); #↑機種依存文字が「?」に置換されます }