Perl:路径是“找不到”,除非我使用glob(路径),为什么?

时间:2016-02-02 15:53:26

标签: perl glob

我还是新来的perl,所以为新手问题道歉!

我正在使用 glob 来引用主目录。

脚本的第一部分命名文件夹的路径并确认它存在:

$path = glob("~/Desktop/Folder/nextFolder/file.txt");
if( !(-e "$path") ) {
    print "Error: invalid path <$path>\n";
    exit 1;
}

最初我只是使用以下脚本:

$path = "~/Desktop/Folder/nextFolder/file.txt";
if( !(-e "$path") ) {
    print "Error: invalid path <$path>\n";
    exit 1;
}

但它在执行时抛出了“错误:无效路径”错误。

我已经阅读了 glob ,但我并不理解它 - 我在网上找到了这个解决方案并尝试了它,并且它有效!

有人可以解释它正在做什么来允许引用主目录吗?没有它,为什么这不起作用?

如果需要更多信息,请告诉我们!谢谢!

1 个答案:

答案 0 :(得分:3)

来自perldoc -f glob

  

在列表上下文中,返回EXPR值的文件名扩展(可能为空)列表,例如标准的Unix shell / bin / csh。在标量上下文中,glob遍历这样的文件名扩展,当列表用完时返回undef。

~/是一个shell速记,表示当前用户的主目录。

通过glob运行~/会将/home/someuser/扩展为~(或主目录所在的位置)。

如果你不扩展它,那么Perl会查找一个实际名为ALL的目录。

(你只需要遍历列表(一个项目长)一次)。