NAME
IO::Barf - Barfing content to output file.
SYNOPSIS
use IO::Barf qw(barf);
barf($file_or_handler, 'CONTENT');
SUBROUTINES
barf
barf($file_or_handler, 'CONTENT');
Barf content to file or handler.
Returns undef.
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
LICENSE AND COPYRIGHT
© 2009-2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.11