Text::CSV::Simple

via http://d.hatena.ne.jp/makiton/20071207/1197027594
こうやれば出来ます。

use Text::CSV::Simple;
use Encode qw/from_to/;

my $parser = Text::CSV::Simple->new({binary => 1});
$parser->add_trigger(before_parse => sub {
    from_to($_[1], 'utf8', 'cp932');
});

ようするにトリガの中で変数に受け取らないで直接さわればいい。どう考えてもスマートではないけどね。