在Perl哈希键名中使用计数器变量

Wic*_*ick 1 variables perl hash

我有一堆HTML表单字段数据作为哈希,其中每个字段名称成为键,字段值是哈希值...您的标准CGI模块输出来自:

my $query = new CGI;
my %formdata = $query->Vars;
Run Code Online (Sandbox Code Playgroud)

这次我正在处理多个表单字段的集合,每个表单字段都有一个数字后缀("name1""name2"..."size1""size2"等).有没有更好的方法来使用计数器循环数组中的数组而不是这个?

for (my $i = 1; $i < 10; $i++) {
  print "  Name $i: " . $formdata{"name$i"} . "\n";
  print "  Size $i: " . $formdata{"size$i"} . "\n";
}
Run Code Online (Sandbox Code Playgroud)

...这不错,但是有一个更简单的语法吗?就是这样(但这不起作用 - 如果没有包或对象引用,不能调用方法"name"):

  print "  Name $i: $formdata{name$i}\n";
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 6

显而易见的解决方案不起作用:

  print "  Name $i: $formdata{"name$i"}\n";
Run Code Online (Sandbox Code Playgroud)

但可以固定通过替换套实际双引号的"..."qq运营商(qq{...}qq(...)qq/.../或任何你喜欢):

  print qq{  Name $i: $formdata{"name$i"}\n};
Run Code Online (Sandbox Code Playgroud)

请参见手册页中的"引用和引用类操作符"perlop.