相关疑难解决方法(0)

如何检查深层Perl哈希中是否存在密钥?

如果我理解正确,呼召if (exists $ref->{A}->{B}->{$key}) { ... }将会存在$ref->{A},$ref->{A}->{B}即使它们之前不存在if!

这似乎非常不受欢迎.那么我该如何检查是否存在"深度"哈希键?

perl hash autovivification

28
推荐指数
4
解决办法
1万
查看次数

将文件读入Perl中的变量

可能重复:
在Perl中将文件粘贴到字符串中的最佳方法是什么?

这段代码是将文件内容读入Perl变量的好方法吗?它有效,但我很好奇我是否应该使用更好的练习.

open INPUT, "input.txt";
undef $/;
$content = <INPUT>;
close INPUT;
$/ = "\n";
Run Code Online (Sandbox Code Playgroud)

perl slurp filehandle

14
推荐指数
2
解决办法
4万
查看次数

如何删除与perl中第二个数组中的某个元素相等的数组元素

只是想知道我是否有两个数组,A和B,如何删除/删除A中也可以在B中找到的那些元素?这样做最有效的方法是什么?

而且,作为一种特殊情况,如果B是grepA 之后的结果数组,该怎么做?当然,在这种情况下,我们可以做一个grep否定的条件.但是在perl中是否有类似于另一个数组的补充?

谢谢.

perl

11
推荐指数
1
解决办法
1273
查看次数

如何避免将重复值推送到Perl数组中

我需要从包含多个重复值的输入中添加数组中的唯一元素.

如何避免将重复值推送到Perl数组中?

arrays perl

11
推荐指数
2
解决办法
2万
查看次数

在Perl中确定字符串变量是否与列表中的字符串匹配的惯用方法是什么?

规范的一部分说"有些名字很特别,例如Hughie,Dewey,Louis和Donald.在项目的整个生命周期中,可以随意添加其他名称.每当你输入其中一个名字时,请玩quack.wav."

可以写......

while (<>) {
    if ($_ =~ /Hughie|Dewey|Louis/) {
        quack() ;
    }
    elsif ($_ =~ /Donald/ {
        quack() ;
        you_re_fired_apprentice() ; # Easter egg don't tell QA
    }
}
Run Code Online (Sandbox Code Playgroud)

...但是虽然要实施,但它看起来是WTF-y:二进制搜索在哪里?如果鸭子名字的数量突然大幅增加怎么办?它根本不会扩展!

我可以在临时目录中使用这些名称创建空文件,然后使用"文件存在"API,但这看起来很迂回,我必须确保它们最后被删除.

当然有更好的方法吗?

perl hash list

7
推荐指数
3
解决办法
236
查看次数

在列中查找唯一值,并将唯一值替换为数字

我有一个标签限制数据读取

1 0 0 1 1 Black Swan
0 0 1 0 0 Golden Duck
1 0 0 1 0 Brown Eagle
0 0 1 0 1 Golden Duck
1 0 0 1 0 Black Swan
1 0 1 0 0 Golden Duck
1 0 0 1 1 Sparrow
Run Code Online (Sandbox Code Playgroud)

最后一列是由空格分隔的一个或多个单词的组合.我想计算最后一列中唯一值的数量,并将其替换为该组唯一的数字.我知道我可以计算并列出使用的数字

awk -F '\t' '{print $NF}'  infile | sort | uniq | wc -l
Run Code Online (Sandbox Code Playgroud)

但是如何用数字替换?例如,将所有黑天鹅替换为1,将所有金鸭替换为2等.我希望结果如下:

1 0 0 1 1 1
0 0 1 0 0 2
1 0 0 1 …
Run Code Online (Sandbox Code Playgroud)

unix perl awk replace

3
推荐指数
1
解决办法
178
查看次数

标签 统计

perl ×6

hash ×2

arrays ×1

autovivification ×1

awk ×1

filehandle ×1

list ×1

replace ×1

slurp ×1

unix ×1