以前の支援に感謝します。Perl の RegExp について質問があります
私の問題は..
マッチングするときは、m// または // または ## を書くことができます (これを使用する場合は、m または s を含める必要があります)。混乱を引き起こしているのは、私が持っているエスケープ文字に関する本の例です。私は、ほとんどの人が多くの文字をエスケープすると信じています。これは、プログラムがメタ文字を見逃さずに動作する確実な方法です。
これが私の問題であり、このスクリプトが何をするかを知っています:
$date= "15/12/99"
$date=~ s#(\d+)/(\d+)/(\d+)#$1/$2/$3#; << why are no forward slashes escaped??
print($date);
しかし、私が持っている後の例は、次のように書き直されたことを示しています(これも理解しており、エスケープされています)
$date =~ s/()(\d+)\/(\d+)\/(d+)/$2\/$1\/$3; <<<<which is escaping the forward slashes.
スラッシュまたはハッシュがプログラマーの好みとその使用法であることは知っています。私が理解していないのは、なぜ 2 番目の例がスラッシュをエスケープしているのに、最初の例がそうでないのかということです。ハッシュでスラッシュをエスケープしませんか? さらに紛らわしいのは、これより前に私が持っているさらに別の本の例を見ると、ハッシュを再び使用すると、@ 記号もエスケープされます。
if ($address =~ m#\@#) { print("That's an email address"); }
または似たようなもの
では、ハッシュやスラッシュを使用していないものから何をエスケープしますか? メタ文字を一致させるにはエスケープする必要があることは知っていますが、混乱しています。