天然パーマです。

Windowsで作って日本語が含まれるZIPファイルをPerlで文字化けせず解凍する

Archive::Zip使った。なんかEncodeの辺りが無理矢理な気がするが、こんな感じかしら。

use Archive::Zip;
use File::Spec;
use Encode;

my $file = $ARGV[0];
my $zip  = Archive::Zip->new();
die 'read error' unless $zip->read($file) == &Archive::Zip::AZ_OK;

for my $member ( $zip->members ) {
    my $to = File::Spec->catfile(decode('shift_jis',$member->fileName()));
    $zip->extractMember( $member, $to );
}

スクリーンショット(2011-10-08 14.34.42)