我注意到-d标志的奇怪行为,以检查文件是否是目录以及目录是否存在.使用~/my_dir我的路径时,它的行为有所不同.
以下代码将返回false,即使该目录my_dir存在,但如果我将其更改为完整路径/home/ricky/my_dir,则该if语句将返回true.
#!/usr/bin/perl -w
#
use strict;
if ( -d "~/my_dir") {
print "Found \n";
}
else {
print "Not found \n";
}
Run Code Online (Sandbox Code Playgroud)
有什么不同?
~不是真正的道路.如/bin/bash将其扩展为$HOME环境变量的值.Perl没有.所以,你应该使用这样的东西:
if ( -d "$ENV{HOME}/my_dir" ) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26392 次 |
| 最近记录: |