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

Reply via email to