in reply to Re^2: 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

but the delimiters can be any other character except whitespace
You probably meant it implicitly, but delimiters cannot be word characters (or alphanumerical characters).
  • Comment on Re^3: Scripts work when run individually but not when run as one compiled script

Replies are listed 'Best First'.
Re^4: Scripts work when run individually but not when run as one compiled script
by Anonymous Monk on Jan 20, 2016 at 00:26 UTC

    You probably meant it implicitly, but delimiters cannot be word characters (or alphanumerical characters).

    Heheh, try it

    $ perl -le" $_ = q\e\; s OeOEO; print " E $ perl -MO=Deparse -le" $_ = q\e\; s OeOEO; print " BEGIN { $/ = "\n"; $\ = "\n"; } $_ = 'e'; s/e/E/; print $_; -e syntax OK $ perl -le" $_ = q 1e1; s 1e1E1; print " E $ perl -MO=Deparse -le" $_ = q 1e1; s 1e1E1; print " BEGIN { $/ = "\n"; $\ = "\n"; } $_ = 'e'; s/e/E/; print $_; -e syntax OK

      This trick appeared on September 19, 2006 on the fun with perl mailing list - Punctuation Free Quine:

      s zzs vvxv and s ZVZchr 122Zie and s ZVZchr 122Zie and s ZVZchr 122Zie and s SxSlcfirstSe and s YZZxZYvvxvYi and print z and s ZVZchr 122Zie and s ZVZchr 122Zie and s ZVZchr 122Zie and s SxSlcfirstSe and s YZZxZYvvxvYi and print

      <update>

      As you might expect from the wonderful perl documentation, this is documented. From perlop:

      s/PATTERN/REPLACEMENT/msixpodualgcer
      ...
      Any non-whitespace delimiter may replace the slashes. Add space after the "s" when using a character allowed in identifiers.
      </update>

      perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
      Alright, I was wrong, thank you for the correction. I am pretty sure I tested it once long ago and concluded that it did not work, but I guess my test was probably wrongly written.

      Surely I should have have better shut up rather than saying something wrong, but at least I learned something that I did not know. Thanks to both of you.

        Surely I should have have better shut up rather than saying something wrong

        No. Without somebody saying something wrong there would be no need for correction and this bit wouldn't have been revealed. Your remark triggered me to look through my mail folders... ah, there! Later I looked up the documentation, well this must have been documented somewhere... and I had overlooked that tiny bit in perlop as well. Which reminds me that I, shame on me, in contrast to Abigail, *still* didn't read all of the standard perl documentation. It is so dense.

        So, thanks to you as well, dear fellow.

        perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'