2014-01-30 20 views
-5

誰能告訴我爲什麼我得到這樣的:Perl的用法錯誤

usage: gen-non-random.pl <count> <outputfile> 

從下面的代碼: #在/ usr/bin中/ perl的-w # #腳本生成非隨機值,以演示一個糟糕的隨機性圖 #爲我的「如何分析SessionIDs」。 # #寫的:

$version = "0.0.4"; 
$filename = "gen-non-random.pl"; 
$usage = "usage: $filename <count> <outputfile>\n"; 

$count = $ARGV[0] or die ("$usage\n"); 
$output = $ARGV[1] or die ("$usage\n"); 
print ("-- $filename Version: $version\n"); 

use Time::HiRes qw(usleep ualarm gettimeofday tv_interval); 
use Math::Random; 
use Digest::MD5 qw(md5_hex); 

open (OUT, ">$output") or die ("Can't open $output\n"); 

for ($i=0; $i<$count;$i++) 
{ 
# generate a random number 
$random = random_uniform(); 
# cut out char 3-9 of $random and put it in $randsub 
$randsub = substr($random, 2, 6); 
# get seconds and microseconds since epoch 
($seconds, $microseconds) = gettimeofday; 
# get the last two chars of the seconds and put them into $s 
$s = substr($seconds, 8, 2); 
# sleep for a while 
usleep $randsub; 
# put together the last two digits of seconds and the microseconds 
$time = $s . $microseconds; 
$md5_time=md5_hex($time); 
# print out the stuff we put together above 
print OUT ("$md5_time\n"); 
} 
close (OUT) or die ("Can't close $output\n"); 
print ("$count values written to $output\n"); 
exit; 

我是新來編程,所以我需要非常簡單的答案,請!我沒有擁有我在大學研究論文中使用的代碼。另外,有人請向我解釋什麼用法實際上是我似乎無法找到一個很好的解釋呢? 謝謝。

+4

這是你昨天問過的完全相同的問題(儘管你似乎已經刪除了它)。兩個人在評論中解釋了爲什麼你會得到這個錯誤。你不瞭解他們的解釋嗎? – ThisSuitIsBlackNot

+0

只是爲了好的衡量:這意味着腳本需要兩個參數,一個整數和一個輸出文件名。要運行它,請執行以下操作:'gen-non-random.pl 10 output.txt' – ThisSuitIsBlackNot

+1

http://stackoverflow.com/q/21443286/223226 –

回答

2

你收到這個錯誤,因爲你使用程序正確不是

usage: gen-non-random.pl <count> <outputfile> 

這基本上意味着你必須提供一個計數和輸出文件作爲參數,如:

perl gen-non-random.pl 42 outfile.txt 

這將生成四十二個數字並將它們輸出到outfile.txt文件。

這是開始附近的兩條線,檢查ARGV[0/1]die - 如果您不提供它們,即輸出此消息並退出程序。

+0

謝謝你的幫助!這是有道理的,我運行的代碼,但我沒有得到任何輸出文件,我認爲這是由於程序自動退出,因爲它說在腳本中?再次感謝。 – user3250789

+0

@ user3250789,沒錯 - 'die'會輸出給它的字符串,然後退出。 – paxdiablo

+0

非常感謝你:)我已經設法讓它工作,這是一個了不起的救濟! @paxdiablo – user3250789

0

嗯。我無法運行上述代碼,因爲Time :: HiRes :: ualarm()未在Windows上實現。也就是說,在休眠幾秒鐘後,它似乎會生成一個MD5的當前時間字符串(以整數形式),然後將結果轉儲到文本文件中。您正在收到上面提到的用法消息,因爲程序需要輸入。嘗試在命令行像這樣運行它:

perl gen-non-random.pl 10 MyResults.txt 

我懷疑將傾10個HD5哈希結果到一個名爲「MyResults.txt」文件。