0

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

PS> - 因为它在命令行中运行良好,我假设我的路径设置正确。

这是我得到的错误:无法在 perlP4.pl 第 5 行通过包“P4”定位对象方法“new”(也许您忘记加载“P4”?)。

这是我的程序:

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

任何帮助,将不胜感激。

4

3 回答 3

1

P4 模块存储在文件 P4.pm 中。尝试在您的系统中找到此模块以查看它是否已安装。

如果没有安装,请先安装。

http://www.perforce.com/perforce/doc.current/manuals/p4script/02_perl.html

于 2013-09-23T13:33:44.363 回答
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.
于 2014-01-16T11:47:33.610 回答
0

我有一段时间没有使用 Perforce,所以我可能在这里过时了:

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

仔细阅读安装说明。确保已安装 API 库以及 P4 模块(及其所有子模块)。由于use P4;它本身不会抛出错误,我假设 P4 模块的 Perl 部分已安装。问题在于与 P4 C++ API 的通信。

sub new子例程不在P4.pm模块中,而是P4.xsXS 包的一部分。如果您已P4.pm安装,但您没有正确设置 API,您将收到您遇到的错误。

于 2013-09-23T14:31:42.703 回答