[英]Check if directory exists in ~/ using Perl
我注意到-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";
}
有什么不同?
~
是一個shell快捷方式,用於指示主目錄,perl是未知的。 您必須在此處使用環境變量HOME
- 例如使用"$ENV{HOME}/my_dir"
。
~
不是真正的道路。 諸如/bin/bash
shell將它擴展為$HOME
環境變量的值。 Perl沒有。 所以,你應該使用這樣的東西:
if ( -d "$ENV{HOME}/my_dir" ) {
...
}
您也可以通過執行chdir命令來檢查。 如果目錄不存在,則chdir“dir_name”將返回0。 如果目錄存在,則為1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.