Documentation for routine
slurp assembled from the following types:
(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␤»
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.
:$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.
multi method slurp(IO::Path: :, :)
Read all of the file's content and return it as either Buf, if
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
From Independent routines
multi sub slurp(IO::Handle = , |c)multi sub slurp(IO() , |c)
Slurps the contents of the entire file into a
: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;