這是一個簡單的Perl腳本,它接受2個參數 - 一個字符串(它是一個URL)和一個整數值。即使在退出循環後,Perl系統()命令也會運行
我所要做的就是在給定的時間段(以秒爲單位)對傳遞的URL運行curl請求。
當URL很簡單時就像http://admin:[email protected]:5074/?q=james
一樣好,但當URL中存在&
時就會出現問題。
問題是system()
即使在退出循環後,curl請求仍會繼續運行。
發生了什麼事?
use strict;
use warnings;
use URI::Escape;
my $url = uri_escape($ARGV[0]);
print "URL=".$url."\n";
my $duration = $ARGV[1];
print $duration;
my $start = time();
my $end = $start + $duration;
my $request = 0;
while(time() <= $end){
system("curl --user admin:admin --digest ".uri_unescape($url));
$request++;
}
print "------------------------ END ----------------------------------\n";
print "URL = ".uri_unescape($url)." \n";
print "Total requests made = ".$request."\n";
print "Reqs/sec = ".($request/$duration)."/sec \n";
#print $start."\n";
#print $end."\n";
print "Duration = ".$duration." sec \n";
print "-------------------------------------------------------------------\n";
的命令是:
perl curl.pl "http://admin:[email protected]:5074/?q=james&format=xml" 5
爲什麼不使用有光澤的'WWW :: Mechanize'或'LWP'模塊? – 2013-03-15 00:08:50
我想使用本機perl模塊,因爲我希望能夠在任何機器上運行而無需處理安裝perl模塊 – Sudhakar 2013-03-15 00:24:00
將URL傳遞給'uri_unescape'永遠是不正確的。 'uri_unescape'用於在非轉義分隔符之間查看組件。 – ikegami 2013-03-15 00:57:33