加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 使perl数组唯一

发布时间:2020-12-15 23:28:32 所属栏目:大数据 来源:网络整理
导读:我目前遇到一个非常简单的问题,即从反引用的 shell命令中捕获输出.我很抱歉问题很简单. 我有一些排序数组(@valid_runs),我知道它包含连续的重复元素.我想使用反引号将此数组回显给uniq.我想捕获数组中的STDOUT.我试图这样做. @unique_valids = `echo '@valid
我目前遇到一个非常简单的问题,即从反引用的 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数组有关,而不是正确使用这些命令.我在其他地方搜索了一下,所以请不要因为解决方案看起来微不足道而感谢我.感谢你的宝贵时间.

解决方案说明:
TLP的解决方案是处理uniq问题最直接的解决方案.我很灵活,因为所有的回复都表明没有系统调用这个问题.如果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{$_}++ } @_;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读