2013-09-23 154 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.