in reply to Re: Scripts work when run individually but not when run as one compiled script
in thread Scripts work when run individually but not when run as one compiled script
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Scripts work when run individually but not when run as one compiled script
by Laurent_R (Canon) on Jan 19, 2016 at 23:09 UTC | |
by Anonymous Monk on Jan 20, 2016 at 00:26 UTC | |
by shmem (Chancellor) on Jan 20, 2016 at 09:04 UTC | |
by Laurent_R (Canon) on Jan 20, 2016 at 13:57 UTC | |
by shmem (Chancellor) on Jan 24, 2016 at 21:00 UTC |