perl – 循环文件行,如果文件不存在则禁止错误

前端之家收集整理的这篇文章主要介绍了perl – 循环文件行,如果文件不存在则禁止错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 shell Perl脚本中有以下内容

my @LS  = `ls -1t /logs/log.csv.*`;
foreach my $line (@LS) {

如果实际存在一个或多个log.csv.*文件,则此方法可以正常工作.

但如果没有日志文件,我会收到错误
ls:无法访问…

我可以以某种方式抑制此警告,因为shell脚本是一个cron脚本,如果没有文件就可以了吗?

解决方法

在Perl中完成所有操作,包括按上次修改时间戳进行反向排序:

在这个例子中,我也做了它,所以它只对每个文件执行一次“stat”.

my @LS = glob('/logs/log.csv.*');

my @mtimes = map { (stat)[9] } @LS;

my @sorted_indexes = sort { $mtimes[$b] <=> $mtimes[$a] } 0 .. $#mtimes;

foreach my $line ( @LS[ @sorted_indexes ] ) {
    ...
}

猜你在找的Perl相关文章