我循环遍历一个数组,我想测试是否在另一个数组中找到了一个元素.
在伪代码中,我想要做的是:
foreach $term (@array1) {
if ($term is found in @array2) {
#do something here
}
}
Run Code Online (Sandbox Code Playgroud)
我已经得到了"foreach"和"在这里做点什么"的部分......但是我为"如果在数组中找到术语"测试所尝试的一切都不起作用......
我试过grep:
if grep {/$term/} @array2 { #do something }
# this test always succeeds for values of $term that ARE NOT in @array2
if (grep(/$term/, @array2)) { #do something }
# this test likewise succeeds for values NOT IN the array
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种不同的"将数组转换为哈希"的方式,许多以前的帖子都指出这些方法非常简单易用......而且没有一个有效.
我是perl的长期低级用户,我只了解perl的基础知识,不明白所有花哨的混淆代码,包含99%我在interwebs上读到的解决方案......我真的,真的,老老实实地欣赏代码中明确的任何答案,并提供代码正在做什么的逐步解释......
...我认真地不要理解$ _以及任何其他种类或类型的隐藏,理解或暗示的价值,变量或功能.如果任何示例或示例的所有变量和函数都以明确的术语命名($ term而不是$ _),我会非常感激...并用注释描述代码正在做什么,所以我,在我所有的精神缺陷的荣耀中,可能希望有一天能够理解它.请.:-)
...
我有一个现有的脚本使用'grep'有点成功:
$rc=grep(/$term/, @array);
if ($rc eq 0) { #something happens here }
Run Code Online (Sandbox Code Playgroud)
但是我将那个完全相同的代码应用到我的新脚本中它只是没有正确成功...即,当它测试$ …
perl ×1