Perl:创建字母数字序列变量

时间:2017-09-07 12:16:51

标签: perl variables alphanumeric

我想请求帮助创建一个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

等等

谢谢

2 个答案:

答案 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;
}