如何在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总是 你能解释为什么“?”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! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |