Moving Around the Directory Tree

12.1 Moving Around the Directory Tree

Your program runs with a "working directory," which is the starting point for relative pathnames. That is, if you refer to the file fred, that means "fred in the current working directory."

The chdir operator changes the working directory. It's just like the Unix shell's cd command:

chdir "/etc" or die "cannot chdir to /etc: $!";

Because this is a system request, the value of $! will be set if an error occurs. You should normally check $! when a false value is returned from chdir, since that indicates that something has not gone as requested.

The working directory is inherited by all processes that Perl starts (we'll talk more about that in Chapter 14). However, the change in working directory cannot affect the process that invoked Perl, such as the shell.[1] So you can't make a Perl program to replace your shell's cd command.

[1] This isn't a limitation on Perl's part; it's actually a feature of Unix, Windows, and other systems. If you really need to change the shell's working directory, see the documentation of your shell.

If you omit the parameter, Perl determines your home directory as best as possible and attempts to set the working directory to your home directory, similar to using the cd command at the shell without a parameter. This is one of the few places where omitting the parameter doesn't use $_.

Some shells permit you to use a tilde-prefixed path with cd to use another user's home directory as a starting point (like cd~merlyn). This is a function of the shell, not the operating system, and Perl is calling the operating system directly. Thus, a tilde-prefix will not work with chdir.

 



Learning Perl
Learning Perl, 5th Edition
ISBN: 0596520107
EAN: 2147483647
Year: 2001
Pages: 205

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net