http://www.perlmonks.org?node_id=110049


in reply to Paths in Perl

I have always found paths and chdir to be somewhat of a pain in Perl. So as he does not seem to be hangin around anymore here is a excellent snippet from Abigail that gives you scoped chdir.

package Chdir; sub TIESCALAR {my $class = shift; bless \$class => $class} sub STORE {${$_ [0]} = $_ [1]; chdir $_ [1]} sub FETCH {${$_ [0]}}

This allows you to have scoped chdir, ie if you do a local $dir= 'newdir' in a block, then the directory changes back to it's initial value at the end of the block:

package main; use vars qw /$dir/; tie $dir => 'Chdir'; $dir = '/tmp'; print "Dir = " . `pwd`; { local $dir = '/etc'; print "Dir = " . `pwd`; } print "Dir = " . `pwd`;

mirod for Abigail