NAME
File::cd - Easily and safely change directory
VERSION
version 0.003
SYNOPSIS
use 5.010;
use File::cd;
use Cwd qw(cwd);
cd '/tmp' => sub {
# output: /tmp
say cwd;
# do something in /tmp
process_directory();
# we can also nest multiple cds
cd '/home/foo' => sub { ... };
};
# back at original directory
say cwd;
DESCRIPTION
The global (and negative) effect of perl builtin function chdir
is well known (see File::chdir's documentation for more details). And few modules have been created to solve this problem:
File::chdir, by David Golden.
File::pushd, also by David Golden.
Cwd::Guard, by Masahiro Nagano.
Unfortunately, I'm not a big fan of their interface. So this modules provides yet another way to change directory in perl.
FUNCTIONS
Exports the function cd
by default.
cd($dir, $code)
Change directory to $dir
, invoke the function reference $code
inside that directory, and go back to original directory.
The return value of this function is the value of the last expression in $code
. Here's an example to utilize it:
# get a list of files contained in directory /home/example
use File::Spec qw(catfile);
my $destination = '/home/example';
my @files = cd $destination => sub {
map { catfile $destination, $_ } glob '*'
}
# make sure to match the context!
my $files = cd $destination => sub {
[ map { catfile $destination, $_ } glob '*' ]
}
Throws an exception when the directory $dir
does not exist or is not a directory.
NOTE: This function is prototyped, which means the validity of supplied arguments are checked at compile time.
AUTHOR
Ahmad Syaltut <syaltut at cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Ahmad Syaltut.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.