2011-08-20 48 views
0

我對perl比較陌生,我試圖創建一個perl腳本來遠程登錄web表單並返回成功或失敗。但它不工作或者我失去了一些東西,再加上它給我的錯誤信息:這是我寫的:perl中的遠程web表單發佈

#!/usr/bin/perl 

use LWP::UserAgent; 
use HTTP::Response; 
use HTTP::Request::Common qw(POST); 


$ua = LWP::UserAgent->new; 
$ua->agent("Mozilla 8.0..."); 

$username = "username"; 
$password = "password"; 

my $req = (POST 'http://www.domain.com/login.php', 

["Username" => "$username", 
"Password" => "$password"]); 

$request = $ua->request($req); 
$content = $request->content; 

if ($res->is_success) { 
    print ("success"); 
    exit; 
} 

else { 
print ("failure"); 
} 

這個腳本不運行在所有和我得到的錯誤是:

Can't call method "is_success" on an undefined value at c:\remotelogin.pl line 24. 
+0

那麼,你沒有任何名爲'$ res'的變量,所以它是有道理的,它是未定義的。 –

+0

使用嚴格;使用警告; – Bruce

+0

貶低,因爲我懷疑這個問題會對其他人有用。如果這個問題純粹是針對這個特定錯誤信息的討論(「不能在未定義的值上調用方法X」)和'use strict;使用警告;',它可能更有用。 –

回答

3

它可以強調也不過分它是

use strict; 
use warnings; 

特別是學習Perl的時候是多麼重要。在這種情況下,您有一個未聲明的變量$res。由於錯字或許?如果你已經使用嚴格和警告,你會得到一個編譯錯誤:

Global symbol "$res" requires explicit package name.. 

嚴格,並警告可能給很多嚇人的錯誤,但是一旦你學會如何避免這些,你會意識到他們節省您的時間和而不是相反。

2

$res應替換爲$request

而且use strict; use warnings;