NAME

IO::Barf - Barfing content to output file.

SYNOPSIS

 use IO::Barf qw(barf);

 barf($file_or_handler, 'CONTENT');

SUBROUTINES

barf($file_or_handler, $content)
 Barf content to file or handler.

ERRORS

 barf():
         Cannot open file '%s'.
         Cannot close file '%s'.
         Unsupported reference '%s'.

EXAMPLE1

 use strict;
 use warnings;

 use File::Temp;
 use IO::Barf;

 # Content.
 my $content = "foo\nbar\n";

 # Temporary file.
 my $temp_file = File::Temp->new->filename;

 # Barf out.
 barf($temp_file, $content);

 # Print tempory file.
 system "cat $temp_file";

 # Unlink temporary file.
 unlink $temp_file;

 # Output:
 # foo
 # bar

EXAMPLE2

 use strict;
 use warnings;

 use IO::Barf;

 # Content.
 my $content = "foo\nbar\n";

 # Barf out.
 barf(\*STDOUT, $content);

 # Output:
 # foo
 # bar

EXAMPLE3

 use strict;
 use warnings;

 use Benchmark qw(cmpthese);
 use IO::All;
 use IO::Any;
 use IO::Barf;
 use File::Slurp qw(write_file);
 use File::Temp;
 use Path::Tiny;

 # Temporary files.
 my $temp1 = File::Temp->new->filename;
 my $temp2 = File::Temp->new->filename;
 my $temp3 = File::Temp->new->filename;
 my $temp4 = File::Temp->new->filename;
 my $temp5 = File::Temp->new->filename;

 # Some data.
 my $data = 'x' x 1000;

 # Benchmark (10s).
 cmpthese(-10, {
         'File::Slurp' => sub {
                 write_file($temp3, $data);
                 unlink $temp3;
         },
         'IO::All' => sub {
                 $data > io($temp4);
                 unlink $temp4;
         },
         'IO::Any' => sub {
                 IO::Any->spew($temp2, $data);
                 unlink $temp2;
         },
         'IO::Barf' => sub {
                 barf($temp1, $data);
                 unlink $temp1;
         },
         'Path::Tiny' => sub {
                 path($temp5)->spew($data);
                 unlink $temp5;
         },
 });

 # Output like this:
 #                Rate  Path::Tiny     IO::Any     IO::All File::Slurp    IO::Barf
 # Path::Tiny   3210/s          --        -17%        -51%        -85%        -91%
 # IO::Any      3859/s         20%          --        -41%        -82%        -89%
 # IO::All      6574/s        105%         70%          --        -70%        -81%
 # File::Slurp 21615/s        573%        460%        229%          --        -39%
 # IO::Barf    35321/s       1000%        815%        437%         63%          --

EXAMPLE4

 use strict;
 use warnings;

 use Benchmark qw(cmpthese);
 use File::Temp;

 # Temporary files.
 my $temp1 = File::Temp->new->filename;
 my $temp2 = File::Temp->new->filename;
 my $temp3 = File::Temp->new->filename;
 my $temp4 = File::Temp->new->filename;

 # Some data.
 my $data = 'x' x 1000;

 # Benchmark (10s).
 cmpthese(-10, {
         'File::Slurp' => sub {
                 require File::Slurp;
                 File::Slurp::write_file($temp1, $data);
                 unlink $temp1;
         },
         'IO::Any' => sub {
                 require IO::Any;
                 IO::Any->spew($temp2, $data);
                 unlink $temp2;
         },
         'IO::Barf' => sub {
                 require IO::Barf;
                 IO::Barf::barf($temp3, $data);
                 unlink $temp3;
         },
         'Path::Tiny' => sub {
                 require Path::Tiny;
                 Path::Tiny::path($temp4)->spew($data);
                 unlink $temp4;
         },
 });

 # Output like this:
 # T460s, Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz
 #                Rate     IO::Any  Path::Tiny File::Slurp    IO::Barf
 # IO::Any      8692/s          --        -20%        -65%        -77%
 # Path::Tiny  10926/s         26%          --        -56%        -71%
 # File::Slurp 24669/s        184%        126%          --        -34%
 # IO::Barf    37193/s        328%        240%         51%          --

DEPENDENCIES

Error::Pure, Exporter, Readonly, Scalar::Util.

SEE ALSO

IO::Any

open anything

File::Slurp

Simple and Efficient Reading/Writing/Modifying of Complete Files

Perl6::Slurp

Implements the Perl 6 'slurp' built-in

REPOSITORY

https://github.com/michal-josef-spacek/IO-Barf

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2009-2020 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.09