0

我编写了一个 Perl 包装器,应用了一些 unix 命令,将输出写入日志文件。但是我看到它创建了一些空文件,但我看到一些正在创建的文件不是 0 大小,而是声明 1byte;因此,对于某些后期处理内容,我在使用“if (-s "file") do something else do other thing”时遇到了问题。有人可以帮助我的代码为什么创建一个空行(我想,虽然我已经在那里放置了一个 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 ;
       ..
       ..
}
4

3 回答 3

5

您的打印行:

print OUT3 "$cmd_aging_grab\n" ;

里面有一个 '\n' - 每次都会导致空行 - 即使 $cmd_aging_grab 的内容是空的

于 2012-08-16T14:38:09.613 回答
1

\n在写入输出文件时删除。

于 2012-08-16T14:37:39.260 回答
0

尝试:

print OUT3 "$cmd_aging_grab\n" if $cmd_aging_grab =~ /\S/;
于 2012-08-16T14:48:21.620 回答