$str1 = "foobar"; ($str2 = $str1) =~ s/foo/hoge/g; print "$str1\n"; print "$str2\n"; $str1 は foobar $str2 は hogebar まず、$str2 = $str1 が評価され、$str1 の内容が $str2 へコピーされる。 でもって、その値がパターン置換評価される。 逆に以下のようにすると $str2 = ($str1 =~ s/foo/hoge/g); まず $str1 のパターン置換が行われ、その結果の「パターン置換が行われた回数」が $str2 に代入される。 上記の例では 1。 ただし、1回もマッチしなかった場合は 0 ではなく偽(空文字)になる。(undefではない)