Name

Shell::Tools::Extra - Perl extension to reduce boilerplate in Perl shell scripts (Extra modules)

Synopsis

use Shell::Tools::Extra;    # is the same as the following:

use Shell::Tools; # turns on warnings and strict and exports many funcs
use Try::Tiny qw/try catch finally/;
use Path::Class qw/dir file/;
use File::pushd 'pushd';
use File::Find::Rule ();

# and
use Shell::Tools::Extra  Shell => [ IPC_RUN3_SHELL_ARGS ];
# is the same as
use IPC::Run3::Shell IPC_RUN3_SHELL_ARGS;

Description

This module exports a collection of functions from selected Perl modules from CPAN, in addition to those from Shell::Tools.

Version

This document describes version 0.02 of Shell::Tools::Extra.

Exports

This module exports the following modules and functions.

Like Shell::Tools, each module has an Exporter tag that is the same name as the module.

IPC::Run3::Shell

use Shell::Tools  Shell => [ qw/echo cat/ ];
use Shell::Tools  Shell => 'who';

The argument(s) will be passed through as the arguments to IPC::Run3::Shell's import. Note that Shell must be followed by exactly one argument, either a single scalar or an arrayref.

This module is optional: If no Shell arguments are present in use, this module will not be loaded and it does not need to be installed.

Try::Tiny

try { die "foo" }
catch { warn "caught error: $_\n" }  # not $@
finally { print "finally" };

Path::Class

my $dir      = dir('foo', 'bar');        # Path::Class::Dir object
my $file     = file('bob', 'file.txt');  # Path::Class::File object
# interfaces to File::Spec's tempdir and tempfile
my $tempdir  = Path::Class::tempdir(CLEANUP=>1);   # isa Path::Class::Dir
my ($fh,$fn) = $tempdir->tempfile(UNLINK=>1);      # $fn is NOT an object

(Note that Path::Class may not work properly with Perl before v5.8.0.)

File::pushd

{
    my $dir = pushd('/tmp');
    # working directory changed to /tmp
}
# working directory has reverted to previous

File::Find::Rule

my @files = File::Find::Rule->file->name('*.pm')->in(@INC);

Author, Copyright, and License

Copyright (c) 2014 Hauke Daempfling (haukex@zero-g.net).

This library is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself.

For more information see the Perl Artistic License, which should have been distributed with your copy of Perl. Try the command "perldoc perlartistic" or see http://perldoc.perl.org/perlartistic.html.