Documentation for routine slurp assembled from the following pages:
Class: IO::CatHandle §
From IO::CatHandle
(IO::CatHandle) method slurp §
Defined as:
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»
Class: IO::Handle §
From IO::Handle
(IO::Handle) method slurp §
Defined as:
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.
Class: IO::Path §
From IO::Path
(IO::Path) routine slurp §
Defined as:
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.
Language documentation: Independent routines §
From Independent routines
(Independent routines) sub slurp §
Defined as:
multi sub slurp(IO::Handle = , |c)multi sub 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) Str my = slurp "path/to/file"; # read entire file as Latin1 Str my = slurp "path/to/file", enc => "latin1"; # read entire file as Buf my = slurp "path/to/file", :bin;