Perl 获取第249行Archive.pm中未定义的值时无法调用desiredCompressionMethod
我正在尝试用下面的代码压缩文件,但出现以下错误“无法在Archive.pm第249行的未定义值上调用desiredCompressionMethod”。下面是我的代码。请建议Perl 获取第249行Archive.pm中未定义的值时无法调用desiredCompressionMethod,perl,Perl,我正在尝试用下面的代码压缩文件,但出现以下错误“无法在Archive.pm第249行的未定义值上调用desiredCompressionMethod”。下面是我的代码。请建议 use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $zip = Archive::Zip->new(); my $dir_member = $zip->addDirectory( 'D:\advapp\PSMAG\Scripts\T
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $zip = Archive::Zip->new();
my $dir_member = $zip->addDirectory( 'D:\advapp\PSMAG\Scripts\Testing/' );
my $file_member = $zip->addFile( 'xyz.txt', 'abc.txt' );
unless ( $zip->writeToFileNamed('someZip.zip') == AZ_OK ) {
die 'write error';
}
my $somezip = Archive::Zip->new();
unless ( $somezip->read( 'someZip.zip' ) == AZ_OK ) {
die 'read error';
}
my $member = $somezip->memberNamed( 'stringMember.txt' );
$member->desiredCompressionMethod( COMPRESSION_DEFLATED );
unless ( $zip->writeToFileNamed( 'someOtherZip.zip' ) == AZ_OK ) {
die 'write error';
}
您创建了一个包含两个文件的zip存档: 现在,您尝试在同一存档中查找名为
stringMember.txt
的文件
显然,该文件不存在,因此无法找到该文件
将ref返回给文件名等于给定文件名或undef的成员$字符串必须为Zip(Unix)文件名格式
因此,如错误消息所示,您无法对该未定义的值调用desiredCompressionMethod
如果从文档中复制代码,请确保复制所有代码,或者将部分更改为复制以适合您的代码。即使删除这一行,我也会遇到相同的错误。my$member=$somezip->memberNamed('stringMember.txt')@除非删除该行,
$member
根本不会声明。您是否有使用严格
和使用警告
?如果声明了$member
并包含Zip::Archive member which对象,则只能对其执行操作。您好simbabque,考虑到您所说的行返回undef,我已将修改后的行添加到当前的文件名中,仍然收到相同的错误。我是perl新手,请告诉我哪里出了问题。我恐怕不熟悉Archive::Zip。有一个方法memberNames
,它应该返回存档中的所有文件名。调用该选项并使用Data::Dumper或Data::Printer进行检查。那就从那里开始吧。
my $file_member = $zip->addFile( 'xyz.txt', 'abc.txt' );
my $member = $somezip->memberNamed( 'stringMember.txt' );