我正在尝试编写Perl程序以在Perforce中进行更改。 当我从命令行使用P4运行Perforce命令时,这些工作正常但是当我在perl程序中编写“使用P4”时,它无法识别P4类。 是否有任何可能缺少的配置?
P.S> - 因为它从命令行工作正常,我假设我的路径设置正确。
这是我得到的错误: 无法通过包“P4”找到对象方法“new”(也许你忘了在perlP4.pl第5行加载“P4”?)。
这是我的计划:
use strict;
push ( @INC,"C:\Program Files\Perforce");
use lib "C:\Program Files\Perforce";
use P4; # a p4perl module
my $p4 = new P4;
任何帮助都将不胜感激。
答案 0 :(得分:1)
P4模块存储在P4.pm文件中。尝试在系统中找到此模块以查看它是否已安装。
如果未安装,请先安装。
http://www.perforce.com/perforce/doc.current/manuals/p4script/02_perl.html
答案 1 :(得分: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,则会收到错误。
答案 2 :(得分: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.