如果文件不存在,则从目录中删除文件时出现Perl警告

如果文件不存在,则从目录中删除文件时出现Perl警告,perl,Perl,我正在尝试从目录中删除旧日志文件 这里的逻辑是,如果日志目录不存在,创建它;否则从先前创建的日志目录中删除文件 ... use autodie; my $logpath = "/home/Vinod/Test/LOG/"; if ( !-d $logpath ){ make_path $logpath or die "Failed to create path: $logpath"; } else { unlink glob "$logpath/*.log"; } ... 因此

我正在尝试从目录中删除旧日志文件

这里的逻辑是,如果日志目录不存在,创建它;否则从先前创建的日志目录中删除文件

...
use autodie;
my $logpath = "/home/Vinod/Test/LOG/";
if ( !-d $logpath ){
    make_path $logpath or die "Failed to create path: $logpath";
} else {
    unlink glob "$logpath/*.log";
}
...
因此,当目录已创建且为空时,我将得到以下警告-

Can't unlink():  at script.pl line 41
当目录已存在且为空时,如何避免此警告消息。
TIA.

最简单的方法是更换

unlink glob "$logpath/*.log";


最简单的方法是更换

unlink glob "$logpath/*.log";


您正在使用旧版本的autodie模块。升级它以避免此错误

$perl-e'use autodie;取消不存在的链接。*;核心::说ok' 无法取消链接:at-e第1行 $cpan自动模具 ... TODDR/autodie-2.32.tar.gz /usr/bin/make安装-正常 $perl-e'use autodie;取消不存在的链接。*;核心::说ok' 好啊
您正在使用旧版本的autodie模块。升级它以避免此错误

$perl-e'use autodie;取消不存在的链接。*;核心::说ok' 无法取消链接:at-e第1行 $cpan自动模具 ... TODDR/autodie-2.32.tar.gz /usr/bin/make安装-正常 $perl-e'use autodie;取消不存在的链接。*;核心::说ok' 好啊 注释autodie模块。要创建目录,请使用mkdir;要删除目录,请使用rmtree。请参见下面的编码

use strict;
use warnings;
use File::Slurp;
use IO::All;
use File::Path;
use Win32;
#use autodie;
my $logpath = "G:/perl/StackOverflow/LOG";
if (!-d $logpath ){
    mkdir($logpath);
} else {
    unlink glob "$logpath/*.log";
    rmtree $logpath;
} 
注释autodie模块。要创建目录,请使用mkdir;要删除目录,请使用rmtree。请参见下面的编码

use strict;
use warnings;
use File::Slurp;
use IO::All;
use File::Path;
use Win32;
#use autodie;
my $logpath = "G:/perl/StackOverflow/LOG";
if (!-d $logpath ){
    mkdir($logpath);
} else {
    unlink glob "$logpath/*.log";
    rmtree $logpath;
} 

我正在使用模块文件::Path.Yes,但错误不是来自make_Path;它是从断开连接处传来的。取消链接通常不会发出错误消息。您正在使用autodie使其这样做。但您使用的是有缺陷的autodie版本。升级后问题就消失了。我不知道你说的升级版是什么意思。你是说这个错误被修复的那个?好吧,当你停止接收错误信息时!我不知道是什么版本修复的。谢谢你的解释。但是我没有安装/升级模块的权限。安装模块不需要任何特殊权限。无论哪种方式,您都已经知道如何解决该错误;它是从断开连接处传来的。取消链接通常不会发出错误消息。您正在使用autodie使其这样做。但您使用的是有缺陷的autodie版本。升级后问题就消失了。我不知道你说的升级版是什么意思。你是说这个错误被修复的那个?好吧,当你停止接收错误信息时!我不知道是什么版本修复的。谢谢你的解释。但是我没有安装/升级模块的权限。安装模块不需要任何特殊权限。无论哪种方式,您都已经知道如何解决该bug。请注意,这只是旧版本autodie中的bug的解决方法。较新版本的autodie可以正确处理传递给取消链接的空列表。请注意,这只是旧版本autodie中错误的解决方法。较新版本的autodie可以正确处理传递给取消链接的空列表。