perl - 将数组转换为列表

标签 perl

sub get_list {
    return ("one", "two");
}

sub get_array {
    my @a = ("one", "two");

    # need to convert @a to list
    return @a;
}

my $two = get_list(); # desired, assigns last item in list to scalar 
my $count = get_array(); # evaluates array in scalar context, returning a count

在 get_array() 方法中,我已经创建了一个数组,但我想将它作为列表返回,以便它根据列表规则而不是数组规则进行分配。当然,数组通常会以更复杂的方式构建(不是直接来自列表)。

我曾尝试使用 map,希望它能返回一个值列表,但这给出了相同的结果。与拆分/合并相同。

return map { $_ } @a;
return split /,/, join(",", @a);

如何将数组转换为值列表?

最佳答案

函数可以使用wantarray确定他们所处的上下文并相应地返回一些东西:

sub get_array {
    my @a = ("one", "two");
    return wantarray ? @a : $a[-1];
}

关于perl - 将数组转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685788/

相关文章:

perl - 找不到 Net/IP.pm

perl - 标量上下文中的 glob 是惰性迭代器吗?

regex - 替换所有出现的字符,除非被两个不同的模式包围

mysql - 任何人都能够在带有 i5 处理器的 Mac Snow Leopard 上安装 DBD::mysql 吗?

perl - 为什么这个方案会出现错误 "Inconsistent hierarchy during C3 merge"?

algorithm - Needleman Wunsch 算法 (perl)

perl - Perl Getopt::Long 中的未知选项

linux - 使用 Perl split() 命令解析 `du' 命令的输出

perl - 在不知道模块名但知道文件名的情况下加载和使用perl模块

perl - 在 foreach 中将 undef 变量提升为 ARRAY ref