11月
08
自分用の覚書です。zipファイルの中に複数のzipファイルが有り、zip中zipの中から目的のテキストファイルを探し出して読み込むサンプル・コードです。特別なことは何もないですし、注釈は要らないでしょう。
#!/usr/bin/perl
my $fn_to_be_found = "target.txt";
if ($ARGV[0] =~ /zip$/i) {
use File::Temp qw/tempfile/;
use Archive::Zip;
my $zip = Archive::Zip->new;
$zip->read($ARGV[0]);
my @members = $zip->membersMatching(/zip$/i);
my $finish = 0;
foreach my $m (@members) {
my $fn = $m->fileName;
print "zip in zip file: $fn\n";
my ($temp_fh, $temp_filename) = tempfile(UNLINK => 1);
print "Temporary file name: $temp_filename\n";
$m->extractToFileHandle($temp_fh);
$temp_fh->flush;
my $zip2 = Archive::Zip->new;
$zip2->read($temp_filename);
my $m2 = $zip2->memberNamed($fn_to_be_found);
if ($m2) {
my $fn2 = $m2->fileName;
print ">>$fn2\n";
$file_contents = $m2->contents;
$finish = 1;
}
close $temp_fh;
if ($finish) {last;}
}
}
# print $file_contents;
no comment untill now