我写了一个Perl包装器,应用了一些unix命令,将输出写入日志文件。但是我看到它创建了一些空文件,但我看到一些正在创建的文件不是0大小,而是说明了1byte;因此我在使用“if(-s”文件“)做其他事情做其他事情时遇到问题”对于某些后期处理的东西。有人可以帮助我的代码创建一个空行(我猜,虽然我已经在那里放置了一个chomp),有没有办法消除那个空行,这样如果没有数据输出日志文件总是会转到0字节在处理unix命令后被捕获?或者..你可以建议一种有效的方法来检查文件是否为空,例如这样。
sub sub_unaccessfiles {
my ($disk) = @_ ;
@disk_sorted = split (/\s+/, $disk) ;
$disk_Name = $disk_sorted[4] ;
my $aging_disk = basename ($disk_Name) ;
open (OUT3, ">./diskmonitor_logs/char_disks/aging_files_$aging_disk") || die "Cannot create ./diskmonitor_logs/char_disks/aging_files_$aging_disk: $!\n" ;
my $cmd_aging_grab = `find $disk_Name -type f -name .snapshot -prune -o -atime +180 -printf '%u\t%s\t%t\t%p\n'` ;
chomp $cmd_aging_grab ;
print OUT3 "$cmd_aging_grab\n" ;
close OUT3 ;
..
..
}
答案 0 :(得分:5)
您的打印行:
print OUT3 "$cmd_aging_grab\n" ;
中有一个'\ n' - 每次都会产生空行 - 即使$ cmd_aging_grab的内容为空
答案 1 :(得分:1)
写入输出文件时删除\n
。
答案 2 :(得分:0)
尝试:
print OUT3 "$cmd_aging_grab\n" if $cmd_aging_grab =~ /\S/;