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));

怎么老实说我有值没定义?都定义了啊??
展开
 我来答
百度网友c9e795dda
2014-08-02 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1137万
展开全部
如果你的执行方式是 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) { ... }
追问
谢谢啊谢谢,可是我找你说的改了数据形态,还是有错,在for语句中。。。超级奇怪啊啊啊
追答
那另一个问题就要问... 你到底是想要
for ($a=0;$a<$size;$a++){...}
还是
for ($a=0;$a<$s;$a++){...}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式