2013-09-23 114 views
0

我正在尝试编写perl程序来对Perforce进行更改。 当我从命令行使用P4运行Perforce命令时,这些工作正常,但是当我在perl程序中编写“使用P4”时,它无法识别P4类。 有没有可能丢失的配置?perl无法识别perforce命令

P.S> - 因为它从命令行工作正常,我假设我的路径设置正确。

这是我收到的错误: 无法找到对象的方法“新”经包装“P4”(也许你忘了装载“P4”?)在perlP4.pl线5

这是我的计划:

use strict; 
push (@INC,"C:\Program Files\Perforce"); 
use lib "C:\Program Files\Perforce"; 
use P4; # a p4perl module 
my $p4 = new P4; 

任何帮助,将不胜感激。

+3

尝试单引号? '使用lib'C:\ Program Files \ Perforce';' –

+0

不,它仍然无法正常工作。在大多数的程序中,我已经看到他们直接使用该行: 使用P4,然后使用它。 类似这样的: 使用严格; 使用P4; my $ p4 =新P4; – Nitin

+0

你把“P4”模块放在哪里?我想知道它是否存在于'C:\ Program Files \ Perforce'中。 'p4.exe'可能在那里,但不是'P4Perl'。 –

回答

0

我没有在使用了一段时间Perforce的,所以我也许过时这里:

的P4模块需要Perforce的C++使用API​​库,并且有相当多的用P4模块编译C编程。在Windows中,大部分已经编译完成(并且我看到你正在使用Windows)。

请仔细阅读安装说明非常仔细。确保已安装API库以及P4模块(及其所有子模块)。由于use P4;本身不会引发错误,因此我假定安装了P4模块的Perl部分。问题是与P4 C++ API进行通信。

sub new子程序不在P4.pm模块中,而是P4.xs XS程序包的一部分。如果您安装了P4.pm,但是您没有正确设置API,则会收到错误消息。

0

在命令提示符运行以下命令:

perl -MP4 -e "print P4::Identify()" 

如果您尚未安装p4perl模块,您将看到:

Can't locate P4.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/.... 
.... (snip) .... 
BEGIN failed--compilation aborted.