Giter Site home page Giter Site logo

io-barf's Introduction

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:[email protected]>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2009-2021 Michal Josef Špaček

    BSD 2-Clause License

VERSION
    0.11

io-barf's People

Contributors

michal-josef-spacek avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.