Я написал оболочку Perl, применяя некоторые команды unix, записывая вывод в файл журнала. Однако я вижу, что он создает какой-то пустой файл, но я вижу, что некоторые из создаваемых файлов имеют размер не 0, вместо этого он указывает 1 байт; поэтому у меня возникли проблемы с использованием «if (-s «file» )сделать что-то еще, сделать другое» для некоторых материалов постобработки. Может кто-нибудь помочь, почему мой код создает пустую строку (Я думаю, хотя я уже поместил туда 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 ;
..
..
}