in reply to new : greping
Here is a different technique that avoids the nasty regex that was growing out of control:
use warnings; use strict; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new("data.xls"); my $worksheet = $workbook->add_worksheet(); $worksheet->write ("A1", 'Device'); $worksheet->write ("B1", '/var'); $worksheet->write ("C1", '/'); $worksheet->write ("D1", 'interleaved'); $worksheet->write ("E1", 'avm'); $worksheet->write ("F1", 'fre'); $worksheet->write ("G1", 'cs'); $worksheet->write ("H1", 'us'); $worksheet->write ("I1", 'sy'); $worksheet->write ("J1", 'id'); $worksheet->write ("K1", 'Date'); my $row = 1; open inFile, '<', 'data.txt' or die "Couldn't open data.txt: $!"; while (<inFile>) { chomp; next if ! length $_; if (/logging to (.*?) is/i) { ++$row; $worksheet->write("A$row", "$_"); print "\n$1 "; next; } elsif (/logging to (.*?) is/i) {$worksheet->write("B$row", "$1");} elsif (/(\d+)% \/var/i) {$worksheet->write("C$row", "$1");} elsif (/(\d+)% \//i) {$worksheet->write("D$row", "$1");} elsif (/(\d+)% Interleaved/i) {$worksheet->write("E$row", "$1");} elsif (/(\d+) (\d+) (\d+) (\d+) (\d+) (\d+)/i) { $worksheet->write("F$row", "$1"); $worksheet->write("F$row", "$2"); $worksheet->write("F$row", "$3"); $worksheet->write("F$row", "$4"); $worksheet->write("F$row", "$5"); $worksheet->write("F$row", "$6"); print "$1 $2 $3 $4 $5 $6 "; next; } else {next;} print "$1 "; } close inFile; $workbook->close ();
|
|---|