Perl - 需要帮助使用现有数组中的项填充Term :: ANSIMenu

时间:2011-11-07 18:31:01

标签: arrays perl

尝试使用Term::ANSIMenu来构建一个漂亮的菜单。

文档说items()需要一个数组数组:

items()

Type: array of arrays
Constraints: [[<keyname>, <string>, <code_ref>], ...]
Default: []

所以这很好用:

my $menu = Term::ANSIMenu->new(
    items  => [['1', 'First menu item', \&exec_item],
               ['2', 'And so on', \&exec_item],
              ]) ;

我需要做的是在现有数组中使用字符串提供items()(由我的程序动态创建 - 它可能包含任意数量的字符串)。

e.g。

@array = ('menu choice one', 'menu choice two', 'menu choice three') ;

我正在努力创建一个“数组数组”,然后我可以传递给items()

任何参赛者?

2 个答案:

答案 0 :(得分:1)

使用\@引用现有数组:

my @multiDimensionalArray = (\@preexistingArray1, \@preexistingArray2, ...);

my $multiDimensionalArrayRef = [\@preexistingArray1, 
                  \@preexistingArray2, ...]; # square brackets for array ref!

然后是items

...
items => \@multiDimensionalArray
...

...
items => $multiDimensionalArrayRef
...

答案 1 :(得分:1)

您需要传递reference to array

看起来应该是:

@array = (['1', 'First menu item', \&exec_item]); 
push @array, ['2', 'And so on', \&exec_item];

my $menu = Term::ANSIMenu->new(items => \@array);