作者kornelius (c9s)
看板Perl
标题Re: [问题] 这几行程式能写乘一个回圈吗?
时间Sat Apr 25 01:54:24 2009
※ 引述《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)