2

私は Perl の初心者で、過去 2 日間 Perl の基本について学んでいます。Perl スクリプトを Java プログラムに徐々に変換しています。Perl スクリプトで、このコードに出くわしました。

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

array から th 要素を$arr[$i]取得することを意味することはわかっています。iarr

しかし、どういう=~/^0$/意味ですか?

彼らは配列の要素を何と比較していますか?

これを探しましたが、見つかりませんでした。

誰か説明してください。

参考までに、にarrは浮動小数点値が含まれています。

4

3 に答える 3

10

if ($arr[$i]) =~ /^0$/)は とほぼ同じですが、文字列 " " と " "if ($arr[$i] eq "0")の両方に一致するため、まったく同じではありません。ファイルまたは標準入力から読み取られ、編集されていない場合、これは非常に重要な違いになる可能性があります。00\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 に答える