我是Perl的新手,过去两天我一直在学习Perl的基础知识。 我正在逐步将Perl脚本转换为Java程序。 在Perl脚本中,我遇到了这段代码。
if( $arr[$i]=~/^0$/ ){
...
...
}
我知道$arr[$i]
表示从数组i
获取arr
元素。
但=~/^0$/
是什么意思?
他们比较数组的元素是什么?
我搜索了这个,但我找不到它。
有人请解释一下。
仅供参考,arr
包含浮动值。
答案 0 :(得分:10)
if ($arr[$i]) =~ /^0$/)
大致等同于if ($arr[$i] eq "0")
,但不完全相同,因为它会匹配字符串“0
”和“{{1 }}”。如果从文件或标准输入中读取0\n
并且它未被$arr[$1]
编辑,则这可能是一个非常重要的区别。
chomp
将匹配以非数字字符开头的任何字符串或者不跟随数字字符的零/空格字符串,尽管如果字符串将生成警告包含非空格,非数字字符或仅包含空格(当然也启用了警告)。
答案 1 :(得分:9)
^
和$
是正则表达式锚点,其中$arr[$i]
应以0
开头,并且紧跟在其后面有字符串结尾。
可以写成
if ($arr[$i] eq "0" or $arr[$i] eq "0\n")
答案 2 :(得分:9)
=~
是binding operator。
"Binary "=~" binds a scalar expression to a pattern match"
右侧的 /^0$/
是regex
^ Match the beginning of the line
$ Match the end of the line (or before newline at the end)
零没有特殊意义。