2012-02-16 104 views
0

我似乎無法弄清楚如何只打印一些返回值,如:titleurlcontent打印值在陣列

#!/usr/bin/perl 

    print "Content-type: text/html\n\n"; 
    use REST::Google; 

    # set service to use 
    REST::Google->service('http://ajax.googleapis.com/ajax/services/search/web'); 

    # provide a valid http referer 
    REST::Google->http_referer('http://www.example.com'); 

    my $res = REST::Google->new(
      q => 'ice cream', 
    ); 

    die "response status failure" if $res->responseStatus != 200; 

    my $data = $res->responseData; 

    use Data::Dumper; 
    print Dumper($data); 

    my @results = $data->results; 

    # CANT MAKE THIS WORK 
    foreach my $r (@result) { 
      print "\n"; 
      print $r->title; 
      print $r->url; 
      print $r->content; 
    } 
+2

總是使用'use strict;使用警告;'。如果你有,它會告訴你錯誤:'全局符號「@result」需要顯式包名「 – TLP 2012-02-16 01:46:50

回答

0
#!/usr/bin/perl 

use strict; 

print "content-type: text/html\n\n"; 
use REST::Google; 

# set service to use 
REST::Google->service(
    'http://ajax.googleapis.com/ajax/services/search/web'); 

# provide a valid http referer 
REST::Google->http_referer('http://www.example.com'); 

my $res = REST::Google->new(q => 'ice cream',); 

die "response status failure" if $res->responseStatus != 200; 

my $data = $res->responseData; 
my @results = @{ $data->{results} }; 

foreach my $r (@results) { 
    print "\n"; 
    print $r->{title}; 
    print $r->{url}; 
    print $r->{content}; 
} 

一對夫婦的問題在這裏:

1)$的數據是不是一個對象,所以你不能把它當作一個對象。

$ data->如果您正在調用對象的方法,結果將是正確的語法。在這種情況下$的數據只是一個普通的HASHREF,所以語法是:

$數據 - > {}結果

2)$的數據 - > {}的結果是一個數組引用,而不是一個數組。所以,你需要去引用它來獲得這些值。

現在,我@Results = $數據 - > {}結果變成:

我@Results = @ {$數據 - > {結果}};

@ {ARRAYREF}是你如何解引用數組。

3)當你迭代@results時,你再次使用對象語法。但是,@results的值也只是簡單的HASHREF。所以,$ R->標題變爲:

$ R - > {}標題

使用諸如數據::自卸車的工具來檢查返回值可以在分揀出這種事情的關鍵。你也可以看看Data::Printer,這比Data :: Dumper更性感

2

嘗試:

foreach my $r (@results) { 

注意「s」 - 如果你把腳本放在最頂端:

use strict; 
use warnings; 

你會抓住這些事情

+0

OK」@result「現在是」@results「use strict;和 使用警告;仍然不起作用。 – Blnukem 2012-02-16 01:55:59

+0

@Blnukem Data :: Dumper打印什麼? – TLP 2012-02-16 03:48:28