如何使用perl从不同的目录访问文件

how to access files from a different directory using perl

我正在使用 Perl 的命令行参数获取文件名。我知道文件位置。如何更改目录以使用相应的文件?我需要在目录树中向上移动以获取然后向下移动到不同的分支以获取这些输入文件。

如何锚定在最上层分支,然后改变目录?我这周才开始学习 perl。所以任何帮助都会很棒。

proj
    branch1
           file.pl
    branch2
           file_I_WANT_TO_ACCESS

Perl 有一个 chdir() 改变目录的功能。但是您可能不需要它,因为无论您尝试对文件做什么,几乎肯定会允许您使用文件的完整路径。

注意有3个目录需要大家牢记:

  • 包含您的 Perl 程序的目录(在您的示例中为 proj/branch1)
  • 您 运行 Perl 程序时所在的目录(可以与包含该程序的目录相同 - 但不一定是)
  • 包含您要读取的文件的目录(在您的示例中为proj/branch2)

FindBin 模块(标准 Perl 库的一部分)在这里很有用,因为它会告诉您程序所在的目录,您通常可以从中算出其余位置。

例如:

# $RealBin will contain the directory that you program is in
use FindBin '$RealBin';

# '..' goes up a level to proj
# Then go down into branch2 to find your file
my $file = "$RealBin/../branch2/file_I_WANT_TO_ACCESS";

请注意,我们根本不需要在这里调用 chdir()。我们只是使用文件的完整路径。