NAME

File::Slurper - A simple, sane and efficient module to slurp a file

VERSION

version 0.004

SYNOPSIS

use File::Slurper 'read_text';
my $content = read_text($filename);

DESCRIPTION

DISCLAIMER: this module is experimental, and may still change in non-compatible ways.

This module provides functions for fast and correct slurping and spewing. All functions are optionally exported.

FUNCTIONS

read_text($filename, $encoding, %options)

Reads file $filename into a scalar and decodes it from $encoding (which defaults to UTF-8). Can optionally take this named argument:

  • crlf

    This forces crlf translation on the input. The default for this argument is off. The special value auto will set it to a platform specific default value.

read_binary($filename)

Reads file $filename into a scalar without any decoding or transformation.

read_lines($filename, $encoding, %options)

Reads file $filename into a list/array after decoding from $encoding. By default it returns this list. Can optionally take this named argument:

  • chomp

    chomp the lines.

write_text($filename, $content, $encoding, %options)

Writes $content to file $filename, encoding it to $encoding (which defaults to UTF-8). It can optionally take a crlf named argument that works exactly as in read_text.

write_binary($filename, $content)

Writes $content to file $filename as binary data.

read_dir($dirname, %options)

Open dirname and return all entries except . and ... Can optionally take this named argument:

  • prefix

    This will prepend $dir to the entries

TODO

  • open_text?

RATIONALE

This module tries to make it as easy as possible to read and write files correctly and fast. The most correct way of doing this is not always obvious (e.g. #83126), and just as often the most obvious correct way is not the fastest correct way. This module hides away all such complications behind an easy intuitive interface.

DEPENDENCIES

This module has an optional dependency on PerlIO::utf8_strict. Installing this will make UTF-8 encoded IO significantly faster, but should not otherwise affect the operation of this module. This may change into a dependency on the related Unicode::UTF8 in the future.

SEE ALSO

  • Path::Tiny

    A minimalistic abstraction not only around IO but also paths.

  • IO::All

    An attempt to expose as many IO related features as possible via a single API.

AUTHOR

Leon Timmermans <leont@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.