2017-05-01 9 views
-1

次のコードでは、「...行6」の未定義の値で「メソッドを呼び出せません」というエラーが発生するのはなぜですか?私は似たような記事を読んだことがあります。なぜこの種のエラーメッセージが表示されるのか理解できると思いますが、ここでどのように適用されるのか分かりません。このコードをWWW :: Mechanizeモジュールのチュートリアルからコピーしたので、私はそれを缶の外に出すことを期待しました。あなたが$m変数にWWW::Mechanizeクラスのインスタンスを割り当てるステップを見逃している未定義の値でメソッドXを呼び出すことができません

#!/usr/bin/perl 
use warnings ; 
use strict ; 
use WWW::Mechanize; 
my $url = 'http://www.google.com'; 
my $m->get($url); 
my $link = $m->find_link(text =>'Advanced Search'); 
print "The Google advanced search URL is: $link->url()\n"; 
+3

あなたは '$ m'に値を割り当てていないました。 – ikegami

答えて

4

use WWW::Mechanize; 

my $m = WWW::Mechanize->new; # <-- HERE 

my $url = 'http://www.google.com'; 

$m->get($url); # ...and remove 'my' from this line 

my $link = $m->find_link(text =>'Advanced Search'); 

# also, a method call won't interpolate properly, so change 
# the below line as well: 

print "The Google advanced search URL is: " . $link->url() . "\n"; 

# or: 

# my $result = $link->url(); 
# print "The Google advanced search URL is: $result\n"; 
+0

はい、それは問題を解決するようです。しかし、あなたのコードを使用して、私は今、 "行14(印刷行)で未定義の値"メソッド "URL"を呼び出すことができないというエラーを取得します。そうではないようですが、明らかに正しくありません。 – Rick

+1

@Rickリンクが見つからないと聞こえました。 – melpomene

+0

@melpomene正しいです.Googleホームページに現在「詳細検索」リンクがなく、リンクを更新すると – Rick

関連する問題