这段代码有什么作用?

时间:2011-04-04 13:07:22

标签: perl grep

这就是我想要的

if (grep {/$dn/} @ad_sys) {
    $is_system = 1;
}

但这总是返回1

if (grep $_ == $dn, @ad_sys) {
    $is_system = 1;
}

第二件作品是做什么的?

3 个答案:

答案 0 :(得分:5)

==用于数字比较,如果您需要使用eq进行字符串比较。

答案 1 :(得分:4)

它会从列表@ad_sys中过滤那些数字等于$ dn的元素。 然后,如果结果不为空,则条件为真,并输入if块。

答案 2 :(得分:3)

这两段代码有两点不同。

首先,正如其他人已经指出的那样,存在数字比较运算符的问题。

但其次,/ $ dn /检查$ _是否包含$ dn中的数据。 $ _ eq $ dn检查$ _是否完​​全等于$ dn。

这种差异可能会导致问题,例如,如果您的数据包含从未删除换行符的文件中读取的行。