我有以下Perl脚本,它根据数字生成一个字符串:
my @chars;
push @chars, map(chr, 48..57), map(chr, 97..122);
my $c = $#chars+1;
for (0..50) {
my $string;
my $l = $_ / $c;
my $i = int $l;
my $r = ($l - $i) * $c;
$string .= $chars[$r];
while ($i > 0) {
$l = $i / $c;
$i = int $l;
$r = ($l - $i) * $c;
$string .= $chars[$r];
}
print "$string\n";
}
当我运行时,我得到以下输出:
0
1
2
3
4
...
z
01
01
21
21
41
41
61
61
81
91
91
b1
b1
d1
d1
我错过了什么?感谢任何帮助!
答案 0 :(得分:3)
尝试使用它,它比你拥有的脚本更清晰,并且正确地转换为任意基础:
my @chars;
push @chars, map(chr, 48..57), map(chr, 97..122);
my $base = @chars;
for my $num (0..100) {
my $string = '';
while ($num >= $base) {
my $r = $num % $base;
$string .= $chars[$r];
$num = int($num / $base);
}
$string .= $chars[$num];
print reverse($string) . "\n";
}
答案 1 :(得分:1)