Dan Kogai wrote:
~slurp $file;
Very clever. But still not good enough when it comes to autoboxing.
{ ~slurp }($*PROGRAM_NAME).print
and even
(~slurp $*PROGRAM_NAME).print
works as expected but since "~slurp $file" is really ~(slurp $file),
$*PROGRAM_NAME.~slurp.print
does not.
You want:
(~$*PROGRAM_NAME.slurp).print;
Or:
$*PROGRAM_NAME.slurp(sep=>undef).print;
The problem of ~stringify, ?boolify, and +numify is that
they are infix operators so it goes the opposite direction.
Oh, while I was testing all these on pugs, I came across this.
##
say $*PROGRAM_NAME.slurp.elems;
##
That call to .slurp is in scalar context, since the result is immediately used
as an object.
This says 1 but
##
my @lines = $*PROGRAM_NAME.slurp; say @lines.elems;
##
says 3.
That .slurp is in list context.
Damian