Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自CAM::PDF::Annot模块的Perl脚本出错。Don';我不知道为什么_Perl_Pdf_Annotations_Cpan - Fatal编程技术网

来自CAM::PDF::Annot模块的Perl脚本出错。Don';我不知道为什么

来自CAM::PDF::Annot模块的Perl脚本出错。Don';我不知道为什么,perl,pdf,annotations,cpan,Perl,Pdf,Annotations,Cpan,我相信这可能是我正在使用的模块中的一个bug,或者我完全忽略了一些东西 我的代码是: #!/usr/bin/perl use strict; use warnings; use CAM::PDF; use CAM::PDF::Annot; sub main() { my $pdf = CAM::PDF::Annot->new( 'b.pdf' ); my $otherDoc = CAM::PDF::Annot->new( 'b_an.pdf' ); my $

我相信这可能是我正在使用的模块中的一个bug,或者我完全忽略了一些东西

我的代码是:

#!/usr/bin/perl

use strict;
use warnings;

use CAM::PDF;
use CAM::PDF::Annot;

sub main()
{
   my $pdf = CAM::PDF::Annot->new( 'b.pdf' ); 
   my $otherDoc = CAM::PDF::Annot->new( 'b_an.pdf' );
   my $page = 1;
   my %refs;

   my @list = @{$pdf->getAnnotations($page)};
   for my $annotRef (@list){
       $otherDoc->appendAnnotation( $page, $pdf, $annotRef, \%refs);
   } 

   $otherDoc->output('pdf_merged.pdf');
}
exit main;
此代码几乎直接取自模块的CPAN页面上的概要:

当我使用两个带注释的pdf运行脚本时,问题就出现了。使用两个不带注释的pdf运行。使用一个带批注的pdf和一个不带批注的pdf运行。只有当两个pdf都有注释时才会出错

错误是:“当/usr/opt/perl5/lib/site_perl/5.10.1/CAM/PDF/Annot.pm第195行使用“strict refs”时,不能将字符串(“46”)用作数组引用”

Annot.pm的第195行是:

push @{$annots->{value}}, $pupRef;
Annot.pm位于CAM::PDF::Annot模块内

如有任何关于修复此问题的指导,我们将不胜感激

另外,在错误“string(“x”)”中,x始终是一个数字,并且似乎会根据pdf和pdf中的注释而变化。
我将尝试添加您需要的任何其他信息来帮助您解决这个问题

每当我对CPAN模块有问题时,我都会去它的网页尝试评估它的质量,看看是否已经报告了任何错误

显示以下可疑结果:

CPAN Testers PASS (2)   FAIL (168)   NA (49) 
令人惊讶的是,您能够安装该模块。没有人报告过bug,但代码显然存在一个主要问题。作者似乎不知道测试报告(已经发送到他的CPAN电子邮件地址一年多了),或者已经停止维护

您可以提交错误报告,这样至少其他人会知道您的问题


我知道这并不能回答你关于如何解决问题的问题,但即使你确定了一个解决方案,作者也可能不会应用它(在这种情况下,有人可能会开始成为共同维护者)。

使用Carp::Always
获得更有用的stacktrace。Samuel,也许是个愚蠢的问题,但是您是否尝试过“一个带注释的pdf和一个不带注释的pdf”版本中的带注释pdf?这是为了确保问题不在于PDF,而在于其他方面。当我看到这些错误并发现测试包含无法在*nix类型系统上工作的Windows文件路径时,我将其搞乱了。我需要时间提交一个带有File::Basename的补丁。看到测试中的错误,我觉得这个模块可能在Windows上运行,但没有在其他OSs上测试过。文档还指出,并非所有注释都受支持。。。我想我在2014年将模块的维护工作转交给了@szabgab。这是为我工作的公司开发的一个快速黑客程序,在windows平台上和PDF版本的某个子集上。既然我有空,我很乐意再次帮忙。