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

发布于 2024-12-14 09:34:41 字数 753 浏览 0 评论 0原文

尝试使用 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() 提供现有数组中的字符串(得到由我的程序动态创建 - 它可能包含任意数量的字符串)。

例如,

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

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

有接受者吗?

Trying to use Term::ANSIMenu to build a nice menu.

The doc says items() expects an array of arrays:

items()

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

So this works fine:

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

What I need to do is feed items() with strings in an existing array (that gets dynamically created by my program - it may contain any number of strings).

e.g.

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

I'm struggling to create an "array of arrays" that I can then pass to items().

Any takers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梓梦 2024-12-21 09:34:41

您需要传递 对数组的引用

应该如下所示:

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

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

You need to pass reference to array

Should looks like:

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

my $menu = Term::ANSIMenu->new(items => \@array);
初相遇 2024-12-21 09:34:41

使用 \@ 引用现有数组:

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

或者

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

对于 items

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

或者

...
items => $multiDimensionalArrayRef
...

Use \@ to reference an existing array:

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

or

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

so then for items:

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

or

...
items => $multiDimensionalArrayRef
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文