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

我遇到的问题

for我能够从 URLS 文本文件中读取每个 url 并打印它们,但由于某种原因我似乎无法进入循环。

有什么明显的我忽略或没有做,因为我似乎无法弄清楚为什么它没有到达那里?

它可能与 URI::QueryParam 的东西无关,只是我犯的一个错误,但我找不到它。

$key我已经查看了 URI::QueryParam 的文档,并且就我所看到的和query_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 回答