Perl Module Archive :: Zip - Как узнать, является ли член каталогом файлов? - PullRequest
1 голос
/ 25 ноября 2010

Быстрый вопрос с Archive::Zip. Как я узнаю, является ли участник каталогом или файлом? Мне нужно переместить все файлы Ear с определенного Zip в другой каталог. Тем не менее, некоторые каталоги также имеют суффикс .ear, и я не хочу их.

Я делаю:

my @jarMembers = $zip->membersMatching('^.*\.jar');
foreach my $member (@jarMembers) {
    my $fileName = basename($member->FileName());
    $zip->ExtractMember($member, "$zipRootDir/$fileName";
}

И я хочу убедиться, что я не получу каталог foo.ear.

Я подозреваю, что имена каталогов должны заканчиваться косой чертой, но в документации нет ничего, что прямо указывало бы на это. Я также обращаю внимание на специальные методы Archive :: Zip :: FileMember, но не так много, чтобы документировать доступ к ним. Это просто что-то вроде этого?

if ($member->externalFileName()) {
   print "Member is a file\n";
} else {
   print "Member is a directory\n";
}

Это скажет мне, является ли элемент файлом или каталогом, или моего первого фрагмента кода достаточно?

1 Ответ

2 голосов
/ 25 ноября 2010

Моя версия Perl (5.10.0 в Mac OS X 10.6.5) имеет этот метод в Archive::Zip::Member:

 isDirectory()
     Returns true if I am a directory.
...