如何使用Perl检查和删除符号链接(如果存在)?

Laz*_*zer 8 perl

if (-e "$ENV{MYHOME}/link") {
    system("rm $ENV{MYHOME}/link");
}
Run Code Online (Sandbox Code Playgroud)

这是用于检查符号链接是否存在的代码,如果存在则删除它.

我正在跟踪此代码无效的错误.到目前为止我还没弄清楚,但是发生的事情是这段代码无法删除符号链接,从而导致"文件存在"错误.

我想检查这种技术是否存在一些根本性缺陷?我还阅读了http://perldoc.perl.org/functions/unlink.html,但是想知道是否由于某种原因不建议使用当前的方法?

unp*_*nic 22

只需使用:

if ( -l "$ENV{MYHOME}/link" ) {
    unlink "$ENV{MYHOME}/link"
        or die "Failed to remove file $ENV{MYHOME}/link: $!\n";
}
Run Code Online (Sandbox Code Playgroud)

如果取消链接失败,它会说明原因.在-l询问如果目标是一个链接.该-e文件是否存在要求.如果您的链接指向不存在的文件,则它将返回false,并且您的代码将无法删除该链接.