slurp
ErrorsCollection

slurp

Synthesised documentation from type/independent-routines type/IO/Path type/IO/Handle type/IO/CatHandle

From type/independent-routines

See Original text in context

multi sub slurp(IO::Handle:D $fh = $*ARGFILES|c)
multi sub slurp(IO() $path|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 $text_contents   = slurp "path/to/file";
 
# read entire file as Latin1 Str 
my $text_contents   = slurp "path/to/file"enc => "latin1";
 
# read entire file as Buf 
my $binary_contents = slurp "path/to/file":bin;

From type/IO/Path

See Original text in context

multi method slurp(IO::Path:D: :$bin:$enc)

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.

From type/IO/Handle

See Original text in context

method slurp(IO::Handle:D: :$close:$bin)

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 IO::Handle.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.

From type/IO/CatHandle

See Original text in context

method slurp(IO::CatHandle:D:)

Reads all of the available input from all the source handles and returns it as a Buf if the handle is in :$encoding or as a Str otherwise. Returns Nil if the source handle queue may get exhausted.

(my $f1 = 'foo'.IO).spurt: 'foo';
(my $f2 = 'bar'.IO).spurt: 'bar';
 
IO::CatHandle.new(      $f1$f2).slurp.say# OUTPUT: «foobar␤» 
IO::CatHandle.new(:bin$f1$f2).slurp.say# OUTPUT: «Buf[uint8]:0x<66 6f 6f 62 61 72>␤» 
IO::CatHandle.new                .slurp.say# OUTPUT: «Nil␤»