可能重复:
How do I find a user's home directory in Perl?
我在运行Ubuntu。
每当我传递一个Perl脚本一个以~
开头的路径(例如~/Documents/file.txt
)时,它找不到它。我必须传递规范路径(例如/home/dave/Documents/file.txt
)。
为什么会这样?
我可以让Perl识别~
路径吗?
更新
所有建议的解决方案包括更改脚本中的代码。我想为一个解决方案,不会涉及任何更改脚本本身(因为不是所有的都是我的)。也许是在Bash的工作方式的东西?
问题was posted at Super User的更新版本。
7条答案
按热度按时间xqnpmsa81#
您可以将路径传递给
glob
以扩展它。fcy6dtqo2#
要获得可靠(且简单)的跨平台方法,请尝试File::HomeDir:
lstz6jyr3#
glob函数理解标准Unix文件globbing。
9bfwbjaz4#
尝试将
~
替换为$ENV{HOME}
fslejnso5#
从布鲁诺的评论中,你可以这样做:
e
标志将表达式替换为 executing 或 evaluating replace表达式的 result。w41d8nur6#
使用角引号,而不是双引号:
<xxx>
迭代运算符,人们通常认为是readline
函数的语法糖,如果在 xxx 中有shell元字符,而波浪号计数为其中之一,则调用glob
函数。您可能更喜欢
<:encoding(Latin1)
的开放模式,这取决于文件。krugob8w7#
这个有点晚了,但是一个简单的解决方案是对文件名/路径中的空格进行双转义,这样glob就不会中断。(甚至可能是windows?),然后将结果值存储在var中以便于使用。正则表达式可以使用双反斜杠转义来替换文件名中的空格。例如,sans regex: