0

次のコードがあります。

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);
    }
}

私が抱えている問題

URLS テキスト ファイルから各 URL を読み取って印刷することはできforますが、何らかの理由でループに入ることができないようです。

なぜそこにたどり着かないのかわからないように見えるので、私が見落としている、またはしていないことが明らかなことはありますか?

URI::QueryParam とは何の関係もないかもしれませんが、私が犯した単なるエラーですが、見つかりません。

私は URI::QueryParam のドキュメントを見てきましたが、すべてがどのように記述/フォーマットされているように見えるので、私が見る限り$keyquery_param部品に関する限り、何が間違っているのかわかりませんか?

あなたの助けは大歓迎です、どうもありがとう

4

1 に答える 1

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

問題はほぼ確実にデータにあります。URL の形式が正しくないか、パラメーターがありません。

于 2013-03-13T15:36:22.177 に答える