2013-03-13 106 views
0

環,我有以下的代碼:Perl的廣東話輸入與URI :: QueryParam

use strict; 
use warnings; 
use URI; 
use URI::QueryParam; 

open (URLS, "<urls.txt"); 
open (EXTRAPARAMS, "<extraparams.txt"); 

my @words = (<EXTRAPARAMS>); 

while (my $URL = <URLS>) { 
     my $uri = URI->new($URL); 
     print "GETS THIS FAR\n"; 
     print "$uri\n"; 

    for my $key ($uri->query_param) { 
     print "CANT GET HERE\n";      #why does it not get here? 
     my $org = $uri->query_param($key); 
     for my $word (@words) { 
      for ("$org$word", $word, "$word$org") { 
       $uri->query_param($key, $_); 
       print $uri->as_string, $/; 
      } 
     } 
     $uri->query_param($key, $org); 
    } 
} 

我有

我能夠在每個URL的閱讀問題從URLS文本文件中打印出來,但由於某種原因,我似乎無法輸入for循環。

有什麼明顯的我可以忽略或不做,因爲我似乎無法解決爲什麼它不能到達那裏?

它可能與URI :: QueryParam的東西沒有關係,只是我做了一個錯誤,但我無法找到它。

我已經看過URI :: QueryParam的文檔,並且所有內容似乎都被寫入/格式化,只要我能看到就應該儘可能地涉及到$keyquery_param部件,所以我不知道怎麼了?

你的幫助是非常讚賞,非常感謝

+3

你可以顯示一個它不起作用的示例URL嗎?如果它沒有進入'for'循環,那表明沒有參數。 – 2013-03-13 15:29:53

+0

@ dan1111 - 是的,我想你可能只是回答了我的問題。 – 2013-03-13 15:32:32

+1

除了顯示輸入外,還應檢查「open」語句的返回值,以確保它們成功。 – TLP 2013-03-13 15:32:46

回答

1

代碼的這種簡化工作得很好:

use strict; 
use warnings; 
use URI; 
use URI::QueryParam; 

my $uri = URI->new("http://www.foo.com?bar=baz&sproing=blargh"); 

for my $key ($uri->query_param) { 
    print "$key\n"; 
} 

輸出:

bar 
sproing 

的問題是幾乎可以肯定你的數據:你的網址格式不正確或沒有任何參數。

+0

是對的,原因是因爲該網址沒有包含任何參數,感謝您的幫助 – 2013-03-13 15:42:08

+1

@ perl-user,很高興提供幫助。我們都犯過這些類型的錯誤! – 2013-03-13 15:46:26