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

Perl: Create alphanumeric sequencial vars

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

等等

谢谢

你要求的是一个非常糟糕的主意。您想要创建一个变量,使用另一个变量的值作为名称的一部分。这被称为 "symbolic referencing" 并且有一个很好的理由为什么它是 use strict 变成致命错误的三件事之一。

有关它可能导致的问题的详细讨论,请参阅 Mark Dominus 的 these three articles

几乎可以肯定,解决您的问题的最佳方法是使用数组、散列或其他一些(更复杂的)数据结构。但是如果不了解更多关于你在做什么,很难提出任何具体的建议。

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