- 论坛徽章:
- 0
|
紧急求教大家一个关于Perl二维数组foreach循环遍历的问题
我首先定义了如下三个数组:
@CORNERS = ("w", "b", "wlt", "bht");
@MODES = ("func", "shift", "capture", "jtag");
@DELAYS = ("max", "min");
然后定义作为判定依据的非空数组:
@RUNS = (["max","w", "func"], ["min", "b", "func"]);
想法很简单,就是希望:
(1)若@RUNS为非空数组,并且当从@CORNERS、@MODES和@DELAYS中取出的值,组成@RUNS中的两组时,$skip=0,否则的话,令$skip=1。
(2)若@RUNS为空数组(即@RUNS = ();时),$skip=0。
#!/usr/bin/perl
foreach $m (@MODES) {
foreach $c (@CORNERS) {
foreach $d (@DELAYS) {
my $skip=0;
if (exists($RUNS[0])) {
foreach $r (@RUNS) {
if ($d eq $r[0] && $c eq $r[1] && $m eq $r[2]) {$skip=0}
else {$skip=1}
}
} else {$skip=0};
}
}
}
然而,事实上我发现这样去写是行不通的,最终的$skip在各种情况均恒为1。问题似乎出现在“foreach $r (@RUNS)”这一句上,似乎二维数组不能这样简单的用一个$r来遍历。因为我在这句后面加了一个print $r;后发现,打印出的是一堆类似地址的东西,不是我想要的子数组["max","w", "func"]和["min", "b", "func"]。
查了N本书,还是搞不懂为什么,脑袋都大了。急需这个perl脚本使用,请论坛里面的各位高手给与点拨,小弟感激不尽。 |
|