use strict; use warnings; use Getopt::Long qw(GetOptions); use IO::Uncompress::Gunzip qw(gunzip $GunzipError); #Unzip .gz files into .txt files # In command line run # perl getOptsLong -orig -new my $input_1 = ''; my $input_2 = ''; GetOptions( 'orig=s'=> \$input_1, 'new=s' => \$input_2 ) or die("Error in command line arguments\n"); unless ($input_1) {die "need to specify -orig";} unless ($input_2) {die "need to specify -new";} unless (-f $input_1) {die "no file '$input_1'";} unless (-f $input_2) {die "no file '$input_2'";} my $base_1 = $input_1; $base_1=~s/\.gz$//i; my $base_2 = $input_2; $base_2=~s/\.gz$//i; my $output_1=$base_1.'.txt'; gunzip $input_1 => $output_1 or die"gunzip failed:$GunzipError\n"; my $output_2=$base_2.'.txt'; gunzip $input_2 => $output_2 or die "gunzip failed:$GunzipError\n"; my $csv_1=$base_1.'.csv'; #Convert to cvs open my $infile_1, "<", $output_1 or die $!; open my $outfile_1, ">", $csv_1 or die $!; #$header_1 = "Clock,Sinks,Buffers,Cells,Slew,Path,Vio,Area"; my $lines_1; while(<$infile_1>){ if(/(\w+|\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+.\d+)\s+(\d+.\d+)\s+(\d+)\s+(\d+.\d+)/g){ tr/ /,/s; print $outfile_1 "$_"; $lines_1 = $_; }else{ #$lines_1 = $_; #warn "WARN: This line does not follow the normal output pattern, "; } } #print $outfile_1 $header_1; print $outfile_1 "$lines_1\n"; close $output_1; close $outfile_1; unlink $output_1 or die "cant unlink $output_1 $!"; my $csv_2=$base_2.'.csv'; open my $infile_2, "<", $output_2 or die $!; open my $outfile_2, ">", $csv_2 or die $!; my $lines_2; #my @columns_2 = ('Clock','Time','Waveform','Types','Sources'); while(<$infile_2>){ if(/(\w+)\s+(\d+.\d+)\s+(.\d+\s+\d+.\d+.)\s+/g){ tr/ /,/s; print $outfile_2 "$_"; $lines_2 = $_; }else{ #$lines_2 .= $_; #warn "WARN: This line does not follow the normal output pattern, "; } } #print $outfile_2 "@columns_2\n"; print $outfile_2 "$lines_2\n"; close $output_2; close $outfile_2; unlink $output_2 or die "cant unlink $output_2 $!";