当你转储数组时:
use Data::Dumper;
@arr=('a','b','c');
print Dumper @arr;
你得到这样的东西:
$VAR1 = 'a';
$VAR2 = 'b';
$VAR3 = 'c';
有可能得到这样的东西:
$VAR0 = 'a';
$VAR1 = 'b';
$VAR2 = 'c';
编辑:
到目前为止,我已经完成了这个单行:
perl -lane 'if ($_=~/VAR([0-9]+) = (.*)/) {print "VAR" . ($1-1) . "=" . $2} else {print $_}'
它用作后处理脚本,在 VAR 之后递减数字。但是正如您所看到的,当您有这样的元素时,它不会产生正确的输出:
VAR7=$VAR2->[1];
我能以某种方式扩展这个单行吗?
最佳答案
Dump
方法采用可选的第二个数组 ref,您可以在其中指定输出中所需的变量名称:
my @arr = ('a', 'b', [qw(d e f)]);
my @names = map "VAR$_", 0 .. $#arr;
print Data::Dumper->Dump(\@arr, \@names);
输出:
$VAR0 = 'a';
$VAR1 = 'b';
$VAR2 = [
'd',
'e',
'f'
];
您也可以看看 Data::Printer .没用过,感觉更偏向于数据结构的可视化展示。
关于arrays - Perl - Data::Dumper 数组 - 从 0 开始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361218/