Documentation for routine slurp

Documentation for routine slurp, assembled from the following types:

role IO

From IO

(IO) sub slurp

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(). The routine will fail if the file does not exist, or is a directory.

# 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;

class IO::Handle

From IO::Handle

(IO::Handle) method slurp

Defined as:

method slurp(IO::Handle:D: :$close = False)

Returns all the content from the current file position to the end. If the invocant is in binary mode, will return 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.

class IO::CatHandle

From IO::CatHandle

(IO::CatHandle) method slurp

Defined as:

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 binary mode or as a Str otherwise. Returns Nil if the source handle queue has been 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␤» 

class IO::Path

From IO::Path

(IO::Path) routine slurp

Defined as:

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. See &open for valid values for :$enc.