尝试使用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()
。
任何参赛者?
答案 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);