我注意到我正在修改的一些脚本充满了
if (-e $fullpath_err and -s $fullpath_err > 0) {
...
其中$fullpath_err
是absolute file path
。
我想要适应这种状况。
我想像这样创建一个sub
:
sub fileIsValid {
my $filepath = shift;
return (-e $filepath and -s $filepath > 0);
}
并以这种方式使用它:
if (fileIsValid($fullpath_err)) {
...
还有另一种(可能更简单)的方法吗?
答案 0 :(得分:1)
还有另一种(可能更简单)的方法吗?
据我所知,并非如此。你的代码很好,很像Perl。如果您愿意,可以对fileIsValid()
进行原型设计,以便它专门采用单个标量参数:
sub fileIsValid ($) {
my $filepath = shift;
return (-e $filepath and -s $filepath > 0);
}
尽管原型可能也没必要。
你的代码很好。
答案 1 :(得分:1)
一个小优化。 -e
和-s
调用都会对基础操作系统进行stat
调用。这会给代码增加很小的开销。每个stat
调用实际上将返回有关该文件的所有数据,因此调用它两次是浪费。但是Perl将来自最近stat
的数据缓存到特殊文件句柄_
,因此如果您在第二次调用时使用该数据而不是文件名,则会将一个调用保存到{{1 }}
stat
注意:我还删除了不必要且可能存在问题的原型。
答案 2 :(得分:-1)
如果文件不存在,那么它没有大小。所有真正需要的是:
if(-s $ fullpath_err){ ...