perl for循环出现错误
subport{my$size=@_;my$s=0.5*$size;my@in_port=@_[0..$s-1];my@in_width=@_[$s..$s*2-1];m...
sub port{
my $size=@_;
my $s = 0.5*$size;
my @in_port = @_[0..$s-1];
my @in_width = @_[$s..$s*2-1];
my @port;
my $a;
my $j;
for ($a=0;$a<$size;$a++){
if($in_width[$a]==1){
push @port,$in_port[$a];
}
else{
for ($j=0;$j<$in_width[$a];$j++){
push @port,"$in_port[$a]\[$j\]";
}
}
}
return @port;
}
@input=&port(qw(inpA inpB 16 16));
@output=&port(qw(outresult 32));
怎么老实说我有值没定义?都定义了啊?? 展开
my $size=@_;
my $s = 0.5*$size;
my @in_port = @_[0..$s-1];
my @in_width = @_[$s..$s*2-1];
my @port;
my $a;
my $j;
for ($a=0;$a<$size;$a++){
if($in_width[$a]==1){
push @port,$in_port[$a];
}
else{
for ($j=0;$j<$in_width[$a];$j++){
push @port,"$in_port[$a]\[$j\]";
}
}
}
return @port;
}
@input=&port(qw(inpA inpB 16 16));
@output=&port(qw(outresult 32));
怎么老实说我有值没定义?都定义了啊?? 展开
1个回答
展开全部
如果你的执行方式是 perl -w "path/to/your/script"; 那你不加 -w 便好
如果你在 script 中的档头有一句
use warnings;
那你不要这行便好, 或者你加一行
no warnings; 在 use warnings; 之後也可以
一般我写的 script 在释出时就会把 warnings 关掉..
看看就好, 有时真太龟毛而且不好看懂.
话就回来了, 你之所以见到那句 warning,
是因为你在传入 port() 的参数时, 写的是qw//, ( quoted "words"! 的意思 )
Perl 视之为"字串", 而不是数字, 所以, 当你
$in_width[$a]==1
warnings 会认为你搞错了数据形态! 它预期你用 'eq' 而不是 '=='
如果你想搞定这个 warning, 你可以在下面写成
@input=&port(qw/inpA inpB/, 16, 16);
@output=&port("outresult" ,32);
最後, for ($a=0;$a<$size;$a++) { ... }
在 perl 里可以写成
for my $a ( 0..$size-1) { ... }
如果你在 script 中的档头有一句
use warnings;
那你不要这行便好, 或者你加一行
no warnings; 在 use warnings; 之後也可以
一般我写的 script 在释出时就会把 warnings 关掉..
看看就好, 有时真太龟毛而且不好看懂.
话就回来了, 你之所以见到那句 warning,
是因为你在传入 port() 的参数时, 写的是qw//, ( quoted "words"! 的意思 )
Perl 视之为"字串", 而不是数字, 所以, 当你
$in_width[$a]==1
warnings 会认为你搞错了数据形态! 它预期你用 'eq' 而不是 '=='
如果你想搞定这个 warning, 你可以在下面写成
@input=&port(qw/inpA inpB/, 16, 16);
@output=&port("outresult" ,32);
最後, for ($a=0;$a<$size;$a++) { ... }
在 perl 里可以写成
for my $a ( 0..$size-1) { ... }
追问
谢谢啊谢谢,可是我找你说的改了数据形态,还是有错,在for语句中。。。超级奇怪啊啊啊
追答
那另一个问题就要问... 你到底是想要
for ($a=0;$a<$size;$a++){...}
还是
for ($a=0;$a<$s;$a++){...}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询