加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中找到用户的主目录?

发布时间:2020-12-15 21:28:06 所属栏目:大数据 来源:网络整理
导读:我需要检查一个文件在用户的主目录是否存在,所以使用文件检查: if ( -e "~/foo.txt" ) { print "yes,it exists!" ;} 即使在用户的主目录下有一个名为foo.txt的文件,Perl总是 抱怨没有这样的文件或目录。当我用/ home / jimmy替换“?”(假设用户是jimmy),
我需要检查一个文件在用户的主目录是否存在,所以使用文件检查:
if ( -e "~/foo.txt" ) {
   print "yes,it exists!" ;
}

即使在用户的主目录下有一个名为foo.txt的文件,Perl总是
抱怨没有这样的文件或目录。当我用/ home / jimmy替换“?”(假设用户是jimmy),然后Perl给出正确的判断。

你能解释为什么“?”dosen’t在Perl工作,告诉我什么是Perl的方式
找到用户的主目录?

解决方法

?是一个bash-ism而不是perl-ism,这就是为什么它不工作。鉴于您似乎是在UNIX类型系统上,可能最简单的解决方案是使用$ HOME环境变量,例如:
if ( -e $ENV{"HOME"} . "/foo.txt" ) {
    print "yes,it exists!" ;
}

是的,我知道用户可以改变他们的$ HOME环境变量,但然后我会假设他们知道他们在做什么。如果不是,他们应得到他们得到的一切:-)

如果你想以正确的方式做,你可以看看File::HomeDir,这是一个更多的平台精明。您可以在以下脚本chkfile.pl中查看它的操作:

use File::HomeDir;
$fileSpec = File::HomeDir->my_home . "/foo.txt";
if ( -e $fileSpec ) {
    print "Yes,it exists!n";
} else {
    print "No,it doesn't!n";
}

和成绩单:

pax$ touch ~/foo.txt ; perl chkfile.pl
Yes,it exists!

pax$ rm -rf ~/foo.txt ; perl chkfile.pl
No,it doesn't!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读