In IO::Path§
See primary documentation in context for routine slurp
multi method slurp(IO::Path: :, :)
Read all of the file's content and return it as either Buf
, if :$bin
is True
, or if not, as Str
decoded with :$enc
encoding, which defaults to utf8
. File will be closed afterwards. See &open
for valid values for :$enc
.
In IO::Handle§
See primary documentation in context for method slurp
method slurp(IO::Handle: :, :)
Returns all the content from the current file pointer to the end. If the invocant is in binary mode or if $bin
is set to True
, will return a Buf
, otherwise will decode the content using invocant's current .encoding
and return a Str
.
If :$close
is set to True
, will close the handle when finished reading.
Note: On Rakudo this method was introduced with release 2017.04; $bin
arg was added in 2017.10.
In Independent routines§
See primary documentation in context for sub slurp
multi slurp(IO::Handle = , |c)multi slurp(IO() , |c)
Slurps the contents of the entire file into a Str
(or Buf
if :bin
). Accepts :bin
and :enc
optional named parameters, with the same meaning as open(); possible encodings are the same as in all the other IO
methods and are listed in encoding
routine. The routine will fail
if the file does not exist, or is a directory. Without any arguments, sub slurp
operates on $*ARGFILES
, which defaults to $*IN
in the absence of any filenames.
# read entire file as (Unicode) Strmy = slurp "path/to/file";# read entire file as Latin1 Strmy = slurp "path/to/file", enc => "latin1";# read entire file as Bufmy = slurp "path/to/file", :bin;
In IO::CatHandle§
See primary documentation in context for method slurp
method slurp(IO::CatHandle:)
Reads all of the available input from all the source handles and returns it as a Buf
if the handle is in binary mode or as a Str
otherwise. Returns Nil
if the source handle queue has been exhausted.
(my = 'foo'.IO).spurt: 'foo';(my = 'bar'.IO).spurt: 'bar';IO::CatHandle.new( , ).slurp.say; # OUTPUT: «foobar»IO::CatHandle.new(:bin, , ).slurp.say; # OUTPUT: «Buf[uint8]:0x<66 6f 6f 62 61 72>»IO::CatHandle.new .slurp.say; # OUTPUT: «Nil»