2

我是 Perl 的新手,过去两天我一直在学习 Perl 基础知识。我正在逐渐将 Perl 脚本转换为 Java 程序。在 Perl 脚本中,我遇到了这段代码。

if( $arr[$i]=~/^0$/ ){
...
...
}

我知道这$arr[$i]意味着i从数组中获取第 th 元素arr

但这是什么=~/^0$/意思?

他们将数组的元素与什么进行比较?

我搜索了这个,但我找不到它。

有人请解释我。

仅供参考,arr包含浮动值。

4

3 回答 3

10

if ($arr[$i]) =~ /^0$/)大致等价if ($arr[$i] eq "0"),但不完全相同,因为它将匹配字符串 " 0" 和 " 0\n"。如果$arr[$1]从文件或标准输入中读取并且尚未chomp编辑,这可能是一个非常重要的区别。

if ($arr[$i] == 0)另一方面,将匹配任何以非数字字符开头的字符串或后面没有数字字符的零/空格字符串,但如果字符串包含非空格、非数字,它将生成警告字符或仅包含空格(当然,警告已启用)。

于 2013-05-29T14:13:30.767 回答
9

^并且$是正则表达式锚,它说$arr[$i]应该以开头0并且紧随其后有字符串结尾。

它可以写成

if ($arr[$i] eq "0" or $arr[$i] eq "0\n")
于 2013-05-29T13:51:19.400 回答
9

=~是一个绑定运算符

"Binary "=~" binds a scalar expression to a pattern match"

/^0$/右侧是正则表达式

^        Match the beginning of the line
$        Match the end of the line (or before newline at the end)

零没有特殊含义。

于 2013-05-29T13:59:17.987 回答