michal-josef-spacek / io-barf Goto Github PK
View Code? Open in Web Editor NEWBarfing content to output file.
License: BSD 2-Clause "Simplified" License
Barfing content to output file.
License: BSD 2-Clause "Simplified" License
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.