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 <file1_name> -new <file2_name> 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 $!";

To use Getopt::Long the receiving variables need to be defined first, notice the my's before the call

When using Getopt::Long you do not pass the value but a pointer to the storage location, that is what \$input_1 rather than $input_1 passes

Notice simple error checking for command line options

Notice how i determine a base name by removing the .gz from the end. if no .gz is at the end the original input name is used. Notice how i then add a .txt and .csv to that name to get the output file names

How to sort of hide them?
i just deleted(unlinked) them when they were no longer needed


In reply to Re: How to use Getopt? by huck
in thread How to use Getopt? by chaney123

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.