如何让Perl识别带有'〜'的路径?

Dav*_*d B 5 perl tilde-expansion home-directory

可能重复:
如何在Perl中找到用户的主目录?

我正在运行Ubuntu.

每当我传递Perl脚本时,以~(例如~/Documents/file.txt)它开始的路径都找不到它.我必须通过规范路径(例如/home/dave/Documents/file.txt).

这是为什么?

我可以让Perl识别~路径吗?

UPDATE

所有建议的解决方案都包括更改脚本中的代码.我想要一个不会对脚本本身进行任何更改的解决方案(因为并非所有这些都是我的).也许是Bash的工作方式?

问题的更新版本发布在超级用户.

Woo*_*ble 7

您可以传递路径以glob扩展它.

  • 在 `~/a filename with paths.txt` 处中断。 (2认同)
  • j_random_hacker,[`glob` 文档](http://p3rl.org/glob) 清楚地表明该函数在空格上进行分割。因此你必须引用它。`glob '~/a\ filename\ with\spaces.txt'` 按预期工作。 (2认同)

Dav*_*man 6

要获得可靠(且简单)的跨平台方法,请尝试File :: HomeDir:

use File::HomeDir;
print File::HomeDir->my_home;
Run Code Online (Sandbox Code Playgroud)


Dav*_*oss 5

水珠功能了解标准的Unix文件寻找.

my $file = glob('~/Documents/file.txt');
Run Code Online (Sandbox Code Playgroud)