这段代码有什么作用?

发布于 2024-10-29 04:35:20 字数 218 浏览 0 评论 0原文

这符合我的要求

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

,但总是返回 1

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

第二块有什么作用?

This does what I would like it to

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

but this always returns 1.

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

What does the second piece do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你怎么敢 2024-11-05 04:35:20

==用于数字比较,如果需要字符串比较则使用eq

== is used for numeric comparison, if you need string comparison use eq.

深海里的那抹蓝 2024-11-05 04:35:20

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

It filters those elements from the list @ad_sys that are numerically equal to $dn.
Then, if the result is not empty, the condition is true and the if-block is entered.

緦唸λ蓇 2024-11-05 04:35:20

这两段代码之间有两个区别。

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

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

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

There are two differences between the two pieces of code.

Firstly, as others have pointed out already, there is the issue of the numeric comparison operator.

But secondly, /$dn/ checks to see if $_ contains the data in $dn. $_ eq $dn checks if $_ is exactly equal to $dn.

This difference could cause a problem, for example, if your data consisted of lines read from a file that hadn't been chomped to remove the newline.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文