s// / I understand this, and have used the empty expression before with m//, but never thought to try it with s///.
for($/)x16 A slick way of getting the newline (vis-à-vis -l print until...)! Changing the loop to for($_)x16 is informative. And, since a bare print prints both $_ and $/, I found it rather unobvious which variable holds the strings.
A slick way of getting the newline (vis-ā-vis -l print until...)!
Changing the loop to for($_)x16 is informative.
And, since a bare print prints both $_ and $/, I found it rather unobvious which variable holds the strings.
The for($/)x16 loop aliases $/ and,
despite the x16, only the single $/ value
is (repeatedly) changed, as you will discover by printing it
after the loop has terminated.
Replacing "print" with "warn" like so:
s/^|\d+/$&+$'||1/eg,warn("du='$_' ds='$/'\n"),s// /for($/)x16;
warn("at end du='$_' ds='$/'\n");
BTW, this eccentric "for loop aliasing" trick is
often seen in golf; see, for example, Drunk on golf: 99 Bottles of Beer
in the "Bottle Golf Tip No 2" section (search for
Finally, the "for loop aliasing" trick is a specific
example of Eugene van der Pijll's general golfing mantra,
"Can't possibly work, let's try it anyway". :)
Yes, I too find the "do$0" loop hilarious.
A great write-up of its use in the 2002 Kolakoski game by good ol' Rick Klement
can be found
and also in Mtv's book of golf (page 105).
I believe Ton Hospel was the first person to
use the eccentric "do$0" loop in a golf competition.
And thanks for the "redo" tip; I'd forgotten about
redo after all these years. :)
Update: Just noticed another Rick Klement gem where he concludes with: Lesson to be learned: try something before you say "that can't work" ...
which looks like an independent invention of Eugene van der Pijll's famous golfing aphorism: Can't possibly work, let's try it anyway. :)