Perl:使用curl输出格式化表
我有类似于以下curl代码的代码:Perl:使用curl输出格式化表,perl,formatting,Perl,Formatting,我有类似于以下curl代码的代码: foreach my $value ('1', ..., '5') { my $count = 1; print "\nValue: $value\n\t"; my $start = `curl -m 10 -s "http://SITE/?value=$value" -c cookie.txt`; my $end1 = `curl -m 10 -s "http://SITE2" -b cookie.txt`; if($
foreach my $value ('1', ..., '5') {
my $count = 1;
print "\nValue: $value\n\t";
my $start = `curl -m 10 -s "http://SITE/?value=$value" -c cookie.txt`;
my $end1 = `curl -m 10 -s "http://SITE2" -b cookie.txt`;
if($end1 ne "") {print ". "}; else print "$count ";
my $end2 = `curl -m 10 -s "http://SITE3" -b cookie.txt`;
if($end2 ne "") {print ". "}; else print "$count ";
my $end3 = `curl -m 10 -s "http://SITE4" -b cookie.txt`;
if($end3 ne "") {print ". "}; else print "$count ";
$count++;
}
因此,从值1
到5
,它访问一个网站并将cookie值存储在cookie.txt中。然后,它使用cookie.txt中存储的cookie访问3个不同的网站。一旦访问这些站点,它将打印当前计数(如果请求在10秒后超时,则打印当前计数)
这方面的输出示例如下:
Value: 1
1 1 1 2 . 2 3 3 3 4 . . . 5 5
Value: 2
. . 1 2 2 2 3 3 3 4 . 4 5 5 .
是否可以将输出格式化为:
Value: 1
Site2: 1 2 3 4 .
Site3: 1 . 3 . 5
Site4: 1 2 3 . 5
Value: 2
Site2: . 2 3 4 5
Site3: . 2 3 . 5
Site4: 1 2 3 4 .
我遇到的问题是,在循环中,我只希望每个循环运行一次
$start
。按照我希望的格式,每个站点必须运行一次(3次)。您的要求有点令人困惑,但这将为您提供所需的输出:
my @sites = qw( SITE2 SITE3 SITE4 );
foreach my $value ('1'..'5') {
print "\nValue: $value\n";
my $start = `curl -m 10 -s "http://SITE/?value=$value" -c cookie.txt`;
for my $site (@sites) {
print "\t$site ";
for (1..5) { # assuming you want to fetch each url 5x
my $end = `curl -m 10 -s "http://$site" -b cookie.txt`;
print $end eq '' ? '. ' : $_.' ';
}
print "\n";
}
}
请打开
use strict代码>和使用警告
。
如果你这样做了,你会发现:
foreach my $value ('1', ..., '5') {
print $value,"\n";
}
是一个语法错误。这不是一个好的开始。也许你想要:
foreach my $value ( 1..5) {
print $value,"\n";
}
同样地,您必须创建一个永远不会更改的$count
变量,因为您可以在循环中局部地(通过my
)对其进行范围限定,并在每次迭代中将其设置为1。然后在最后增加它,就在它漂移出范围之前 正如所写的,$count
只会在每个循环结束时发生变化——对应于$value
——这真的是您想要的吗?对于您想要的输出格式,您似乎需要一个单独的循环,不是吗?当cpan模块有这么多的实现方法时,你为什么还要转向curl
?我相信他的真实代码是不同的,否则他就不会看到$value
的“2”。…
是占位符,其方式与SITE和SITE2相同。@Bengrim是正确的。这是一个简单的例子,我放在一起。我的实际代码可能太复杂了,我不得不质疑那些根本不起作用的代码示例的可解释性。