gpt4 book ai didi

arrays - 使 perl 数组唯一

转载 作者:行者123 更新时间:2023-12-03 18:20:01 25 4
gpt4 key购买 nike

我目前在捕获反引号 shell 命令的输出时遇到了一个非常简单的问题。我很抱歉这个问题很简单。

我有一些排序数组 (@valid_runs),我 了解包含连续的重复元素。我想使用反引号将此数组回显到 uniq。我想在一个数组中捕获 STDOUT。我试图这样做。

@unique_valids = `echo '@valid_runs' | uniq`;
print @unique_valids;

此打印语句没有产生任何结果。就此而言,这也不是。
@unique_valids = `echo '@valid_runs'`;
print @unique_valids;

我知道如何使用 uniq 和 echo。这对我来说似乎很奇怪。我认为这与 perl 数组有关,而不是正确使用这些命令。我在其他地方搜索了一下,所以请不要仅仅因为解决方案看起来微不足道而对我投反对票。感谢你的宝贵时间。

解决方案注意事项:
就处理 uniq 问题而言,TLP 的解决方案是最直接的。我相当灵活,因为所有回复都建议不要针对这个问题进行系统调用。如果 Perl 的 uniq 函数与 Unix 的 uniq 相同,那么数组应该保持排序。

如果您不关心排序结果,John Corbett 的解决方案效果很好。

最佳答案

将系统调用用于可以通过 perl 代码轻松完成的事情并不是一个好主意。模块List::MoreUtils有一个 uniq 功能可以满足您的要求:

use List::MoreUtils qw(uniq);

my @unique = uniq @runs;

但是,模块本身内部的子程序非常简单,就像 theglauber 的回答一样:
sub uniq (@) {
my %seen = ();
grep { not $seen{$_}++ } @_;
}

关于arrays - 使 perl 数组唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11801556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com