In the s/// they do need to be forward slashes, not backslashes, which have a different meaning.
Of course the canonical form is s/pattern/replacement/, but the delimiters can be any other character except whitespace, even control characters(but not ^L or ^M := \r, ^J := \n which count as whitespace, too; maybe there are other exceptions), as well as balanced parens, braces and brackets:
qwurx [shmem] ~> perl -le '$_="foe"; s\oe\riend\; print' friend qwurx [shmem] ~> perl -le '$_="foe"; s^Toe^Triend^T; print' friend qwurx [shmem] ~> perl -le '$_="foe"; s^Woe^Wriend^W; print' friend # even this works qwurx [shmem] ~> perl -le '$_="foe"; s$oe$riend$; print' friend
Using a meta-character or a sigil as delimiter makes it unusable as such in the regex, which is why we generally don't do that.
Note that e.g. the ^T is the terminal's representation of "\ct" entered via <Ctrl>-v<Ctrl>-t in the shell on a Linux box.
In reply to Re^2: Scripts work when run individually but not when run as one compiled script
by shmem
in thread Scripts work when run individually but not when run as one compiled script
by john.tm
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |