| File-Glob-Slurp documentation | Contained in the File-Glob-Slurp distribution. |
File::Glob::Slurp - Turns <> into a slurp operator
$Id: Slurp.pm,v 0.2 2009/06/10 05:51:19 dankogai Exp dankogai $
Quick summary of what the module does.
Perhaps a little code snippet.
use File::Glob::Slurp; # slurps path/to/filename.ext my $home = <path/to/filename.ext>; # you can do this if you have LWP::Simple my $away = <http://example.com/>;
tweaks CORE::GLOBAL::glob
HACK #90 of PERL HACK proved that <*glob*> operator is a pretty
good place to implement micro-DSL. This module turns ancient
*glob* operator into modern slurp operator!
As shown in SYNOPSIS, The overridden <> slurps not only
local files but also URL if you have LWP::Simple installed.
Unfortunately <> also acts as readline(). Therefore
my $content = <$path>;
Does not work. In such cases simply add whitespece like:
my $content = < $path >;
Dan Kogai, <dankogai at dan.co.jp>
Please report any bugs or feature requests to bug-file-glob-slurp at rt.cpan.org, or through
the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Glob-Slurp. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc File::Glob::Slurp
You can also look for information at:
Hack #90 of Perl Hacks http://oreilly.com/catalog/9780596526740/
Copyright 2009 Dan Kogai, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| File-Glob-Slurp documentation | Contained in the File-Glob-Slurp distribution. |
package File::Glob::Slurp; use 5.008001; use warnings; use strict; our $VERSION = sprintf "%d.%02d", q$Revision: 0.2 $ =~ /(\d+)/g; use Carp; no warnings 'redefine'; *CORE::GLOBAL::glob = sub { my $path = shift; $path =~ s/\A\s+//; $path =~ s/\s+\z//; my $slurp; if ( $path =~ m{\w+://} ) { eval { require LWP::Simple; }; croak $@ if $@; $slurp = LWP::Simple::get($path); } else { local $/; open my $fh, '<', $path or croak "$path:$!"; $slurp = CORE::readline($fh); close $fh; } return $slurp; }; if ($0 eq __FILE__){ my $content = <http://www.dan.co.jp/>; print $content; } 1; # End of File::Glob::Slurp