我正试图以这种方式加入数组:
@cols = (1,2,3,4);
my $s = join("|$_", @cols);
print $s;
我期待以下输出:
1|2|3|4
但这不起作用。
我也在寻找一些类似reduce的函数,但我找不到一个,也不知道如何在Perl中编写一个。
使用CPAN不是一个选项,因为这个程序将在我无法安装的计算机中执行。
我可以将其他类似的功能用于此目的吗? 如何在Perl中编写泛化连接或缩减函数?
感谢。
答案 0 :(得分:2)
我怀疑你想要:
my $s = join('|', @$hr{@cols} );
使用reduce:
use List::Util 'reduce';
my $s = reduce { "$a|$hr->{$b}" } '', @cols;
(虽然这会产生一个前导|)。
答案 1 :(得分:0)
List::Util
(这不是CPAN的核心,尽管你不应该放弃CPAN)提供reduce
功能。如果您提供输入/所需输出,也许我可以为您模拟一个示例。
看着ysth的答案让我再次猜测你想要的东西:
my $s = join("|", map { $hr->{$_} } @cols);
再次,更多的背景或许我们可以提供更多帮助。
编辑:根据OP的编辑,你真的只是在寻找简单的join
功能。与map不同,它不需要任何$_
,它会自动连接每个元素。
my $s = join("|", @cols);