目前我使用简单的shell one-liner监视特定文件:
filesize=$(ls -lah somefile | awk '{print $5}')
我知道Perl有一些很好的模块可以处理Excel文件所以我们的想法就是每天运行那个检查,也许用cron,然后将结果写在电子表格上以供进一步统计使用.
您可以使用该-s
运营商获取文件的大小和电子表格:: ParseExcel的和电子表格:: WriteExcel模块生产与信息的更新的电子表格.Spreadsheet :: ParseExcel :: SaveParser可让您轻松组合这两者,以防您想用新信息更新现有文件.如果您使用的是Windows,则可能需要自动执行Excel本身,可能需要借助Win32 :: OLE.
您可以使用-s运算符检查文件的大小.
use strict; use warnings; use File::Slurp qw(read_file write_file); use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::SaveParser; use Spreadsheet::WriteExcel; my $file = 'path_to_file'; my $size_file = 'path_to_file_keeping_the_size'; my $excel_file = 'path_to_excel_file.xls'; my $current_size = -s $file; my $old_size = 0; if (-e $size_file) { $old_size = read_file($size_file); } if ($old_size new; my $excel = $parser->Parse($excel_file); my $row = 1; $row++ while $excel->{Worksheet}[0]->{Cells}[$row][0]; $excel->AddCell(0, $row, 0, scalar(localtime)); $excel->AddCell(0, $row, 1, $current_size); my $workbook = $excel->SaveAs($excel_file); $workbook->close; } else { my $workbook = Spreadsheet::WriteExcel->new($excel_file); my $worksheet = $workbook->add_worksheet(); $worksheet->write(0, 0, 'Date'); $worksheet->write(0, 1, 'Size'); $worksheet->write(1, 0, scalar(localtime)); $worksheet->write(1, 1, $current_size); $workbook->close; } } write_file($size_file, $current_size);
编写Excel文件的一种简单方法是使用 Spreadsheet :: Write.但是如果你需要更新现有的Excel文件,你应该查看 Spreadsheet :: ParseExcel.