关于perl中的chdir,我该如何返回上一个目录

时间:2014-01-16 04:49:53

标签: regex perl

DIR1:a / b / c / d DIR2:e / f / g / h

现在我在DIR1中执行Perl脚本,在DIR2中执行chdir(在DIR2中使用数据),在脚本执行后我想返回DIR1。是默认值,如果不是,那么应该使用什么命令。

提前致谢。

3 个答案:

答案 0 :(得分:10)

您应该在第一次chdir之前使用Cwd ....

use Cwd;

# get and save current working directory
my $dir = getcwd;

chdir("/some/path");
# do stuff

# now get back to original dir
chdir($dir);

答案 1 :(得分:2)

你的问题不是很清楚。我认为你可能会问两件不同的事情。如果我了解您的设置,请执行以下操作:

$ cd a/b/c/d
$ perl stuff.pl

stuff.pl执行chdir("e/f/g/h")。现在你想回到a/b/c/d。正确的吗?

案例1:

您希望在脚本完成后返回。由于脚本是在子进程中执行的,因此当您退出子进程时,您将返回到启动脚本之前的位置。没有什么特别需要做的。

案例2:

您希望在脚本完成之前返回。在这种情况下,您可以记住当前目录:

#!/usr/bin/env perl

# remember the directory
my $curdir = `pwd`;
chdir("e/f/g/h");
# ...
# return back:
chdir($curdir);
# ...

答案 2 :(得分:0)

    As per i get your question your purpose is first go to some directory like /a/b/c then  execute some stuff as per requirement then next step is go to another directory like  /e/f/g & execute some stuff.so i write below code as per your need.      

            $dir1 = "/home";
    # This changes perl directory  and moves you inside /home directory.
    chdir( $dir1 ) or die "Couldn't go inside $dir directory, $!";
    print "Your first  location is $dir1\n";
            #Execute your stuff in dir1 
    $dir2 = "/home/prasad";
    # This changes perl directory  and moves you inside /home directory.
    chdir( $dir2 ) or die "Couldn't go inside $dir directory, $!";
    print "Your second  location is $dir2\n";
            #Execute your stuff in dir2