3

背景

我试图将这四行代码提取到一个函数中:

my @firstList = split /\s+/, $doubleArray{A_I}{B_I};
@firstList = shuffle(@firstList);
my @secondList = split /\s+/, $doubleArray{A_I}{C_I};
@secondList = shuffle(@secondList);

由于唯一的功能区别是二维数组的第二个索引,因此我想将第二个索引(“B_I”和“C_I”)传递给函数。

建议的解决方案

换句话说,我想制作一个如下所示的功能:

my funkyFunc($){
     my $index = shift;
     my @list = split /\s+/, $doubleArray{A_I}{$index};
     @list = shuffle(@list);
     return @list;
}

我打算这样使用它:

my @firstList = funkyFunc("B_I");
my @secondList = funkyFunc("C_I");

但是,我不确定 perl 将如何解释"B_I"or "C_I",或者同样地B_Iand C_I。由于这种复杂性,我想知道...

问题

perl 中有没有办法传入数组索引的名称?

4

1 回答 1

4

那些不是数组,那些是哈希(字典,其他语言的关联数组)。这样,B_IandC_I就会被视为裸字字符串。如果这些是实际的数组,那么这些将被视为裸字函数调用,并且您必须让那些可在调用者中调用,并且不需要在那里引用。

由于您使用的是哈希,键是字符串,并且您传入的'B_I'结果将$index是一个字符串B_I,并且由于您{$index}有一些在裸字字符串(the )中不允许的内容$,perl 会将其解释为变量的文字,一切都会按照你想要的方式工作。

于 2019-12-02T18:40:07.153 回答