我正在嘗試使用Palo Alto Networks軟件的API。該代碼應該提交用戶網絡登錄的用戶名和IP地址到Web界面。不能使用未定義的值作爲符號引用
當我嘗試使用的PAN API與他們的示例代碼在Windows機器下面的異常被拋出:
Can't use an undefined value as a symbol reference at
C:/Perl/lib/PAN/API.pm line 179 (#1)
PAN::API::UID::login('PAN::API::UID=HASH(0x7fd113828598)', 'SCU-DSM22/pmmertens', 172.16.6.117) called at API_events.pl line 12
這是代碼,例如自帶的API文檔:
#!/usr/bin/perl -w
use strict;
use PAN::API;
my $useridagent = '10.0.0.99'; #I changed this to our PAN server address
my $useridapi = PAN::API::UID->new($useridagent);
my $user = $ENV{USERDOMAIN}.'/'.$ENV{USERNAME};
my $ipaddress = unpack('W4',gethostbyname($ENV{COMPUTERNAME}));
$useridapi->login($user,$ipaddress);
我確保所有的變量都能正確地檢索。代替文字值也沒有幫助。谷歌搜索這個錯誤提出了關於硬和軟引用的參考,但我沒有看到在下面的代碼中這些規則的任何違規。
這是來自PAN/Api.pm的代碼塊。 179行是打印開始的地方。
sub submit() {
my $self = shift;
use IO::Socket::INET;
use IO::Socket::SSL;
my $socket = IO::Socket::INET->new(PeerAddr => $self->{server},
PeerPort => $self->{port},
Proto => 'tcp');
my $socketssl = IO::Socket::SSL->start_SSL( $socket,
SSL_version =>'TLSv1');
print $socketssl $self->xml;
$socketssl->close;
$socketssl->stop_SSL;
}
就在'print'語句之前,添加'die'\ $ socketssl未定義「除非定義$ socketssl;'並且看它是否在那裏死亡。 – 2012-01-27 21:28:59
發生完全相同的錯誤。有什麼方法可以確保建立到服務器的SSL連接?它甚至給我這個錯誤,如果我把錯誤的服務器IP – 2012-01-27 21:32:56
在這種情況下,還添加'die「xml方法未定義」除非定義$ self-> xml;' – 2012-01-27 21:36:01