Re: [問題] 這幾行程式能寫乘一個迴圈嗎?
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章