Re: [問題] 這幾行程式能寫乘一個迴圈嗎?

看板Perl作者 (c9s)時間16年前 (2009/04/25 01:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
※ 引述《bxorw (每天保持微笑)》之銘言: : 自問自答一下好了... : 我原本想要的功能是:我隨機產生一段純量字串... : ex:$a=aadgadgsagtagvadsgdas... : 接著我想做的是指定某一個位置後,取10個。 : 於是我後來使用這樣的方式得到我要的(這是網路上翻到的方法,小修改一番) : sub num_rand : { : my $length = shift;#隨輸入的長度而定 : my @a = ('0'..'x');#x為$a長度-10 : my $b; : $num = $b[rand @a]; : foreach (1..$length) : { : $num_2 = substr $x, $num, 10;#隨機位置n~位置n+10 : } : return $num_2; : } : my $num_2 = &num_rand(10);#得到我要的答案... : 感謝,前面Keelungman跟LiloHuang幫忙,謝謝<_ _> 請 用警兮用嚴 :) use strict; use warnings; 會這樣說是因為你在上面宣告 my $b; 但是卻用 $b[ rand @a ] 去存取,實際上是 去存取 @b 的第 rand @a 項。且 rand @a 傳回的不是整數,而是浮點數。 請愛用 perldoc , perldoc -f rand 然而,因為你沒有 use strict; use warnings; 所以 perl 不會對你警告。 正確的寫法應該是 my @b; # not my $b; my $num = $b[ int(rand scalar(@a) ) ]; 然後你說 x 是長度-10 , 和 $x 有沒有關連?如果是一樣的。那麼你丟給 substr 的 便是錯的。 請參考一下 perldoc -f substr 另外,你的 $num_2 在 foreach (1..$length) 每次做的東西 便沒有意義,只會留下最後一次的結果而已。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.168.163 ※ 編輯: kornelius 來自: 122.117.168.163 (04/25 01:55)
文章代碼(AID): #19yVpJxI (Perl)
文章代碼(AID): #19yVpJxI (Perl)