我很不确定发生了什么。对于各种长度的@depths
,代码通常有效。然而,在整个输出过程中,程序在某些时候会抱怨使用未初始化的值。
错误归咎于第 20 行:print $chars[$depths[$y]];
如果这是显而易见的事情,我会提前道歉,但我肯定错过了这个问题。我已经用谷歌搜索了大约一个小时,但没有运气,所以任何朝着正确方向的轻推将不胜感激!
完整代码:
#! /usr/bin/perl -w
use strict;
use warnings;
#my @chars = ("0" .. "9");
#my @depths = (0) x 4;
my @chars = ("0" .. "1");
my @depths = (0) x 3;
my ($i, $x, $y);
for ($i = 0; $i < @chars ** @depths; $i++) {
for ($y = 0; $y < @depths; $y++) {
print $chars[$depths[$y]];
}
print"\n";
$depths[$#depths]++;
for($x = 0; $x < @depths; $x++) {
if($depths[$x] == @chars) {
$depths[$x-1]++;
while($x < @depths) {
$depths[$x++] = 0;
}
}
}
}
输出:
000
001
010
011
Use of uninitialized value in print at a.pl line 15.
00
100
101
110