#!/usr/bin/perl my $Name="mytar.pl"; my $Author="by Chung-Yen Chang(candyz0416\@mac.com)"; my $Version="v0.1"; my $LastModDate="[2005-06-05]"; print "\n$Name $Version $LastModDate $Author\n"; print "\nUsage: $Name [options] filename\n"; print " options:\n"; print " -f|--from from encoding (Def: utf8)\n"; print " -t|--to to encoding (Def: big5)\n"; print " -o|--output output filename (Def: my-filename)\n"; print " -z use gzip\n\n\n"; use Archive::Tar; use Encode; use Getopt::Long; my $fromenc="utf8"; my $toenc="big5"; my $output=""; my $isgz=0; GetOptions ('from=s' => \$fromenc, 'to=s' => \$toenc, 'output=s' => \$output, 'z' => \$isgz); my $filename=@ARGV[0]; if ($filename eq "") { exit; } print "Converting...\n"; if ($output eq "") { $output="my-$filename"; } my $tar = Archive::Tar->new; $tar->read($filename,$isgz); my @list=$tar->list_files(); my $fromname; foreach $fromname (@list) { my $toname=encode($toenc, decode($fromenc, $fromname)); print "$toname\n"; $tar->rename($fromname, $toname); } $tar->write($output, $isgz);