我想请求帮助创建一个Perl代码,我可以在其中创建字母数字顺序变量(可以用作数组,散列或任何其他类型的变量)。
for ( my $x = 1; $x <= 10; $x++ ){
my $var$x = "" *# to create empty variable with the word 'var' + the integer from x (var1, var2, var3, ...)*
for ( my $y = 1; $y < 10; $y++){
my $var$x = $var$x.''.$x.''.$y *# to store/concatenate the values from $x+$y into var$x*
}
print "$var$x"
}
应该打印什么:
var1 = 11, 12, 13, 14, 15, 16, 17, 18, 19
var2 = 21, 22, 23, 24, 25, 26, 27, 28, 29
等等
谢谢
答案 0 :(得分:4)
你所要求的是一个非常糟糕的主意。您想要使用另一个变量的值作为名称的一部分来创建变量。这被称为&#34;符号引用&#34;并且有一个很好的理由说明它是use strict
变成致命错误的三件事之一。
如果要对其可能造成的问题进行详细讨论,请参阅Mark Dominus的these three articles。
几乎可以肯定,解决问题的最佳方法是使用数组,哈希或其他(更复杂的)数据结构。但是,如果不了解更多关于你正在做什么的事情,很难提出任何具体的建议。
答案 1 :(得分:2)
Don't try to generate variable names!
你需要的只是
for my $x (1..10) {
for my $y (1..9) {
print "$x$y\n";
}
}
或者,如果您想填充数据结构而不是打印,
my @matrix;
for my $x (0..9) {
for my $y (0..8) {
$matrix[$x][$y] = ($x+1).($y+1);
}
}
与之前相同:
my @matrix;
for my $x (1..10) {
my @row;
for my $y (1..9) {
push @row, "$x$y";
}
push @matrix, \@row;
}