Hi guys,
I have following code that takes multiple files, split fields, do simple arithmetic operation, and write results of each file into a separate output file. Now, I need to modify the code, and print the result of each input file as a seperate column in single output file (instead of multiple output files). I was wondering if you guys can give me a pointer. Thank you.
#!/usr/bin/perl
use warnings;
use 5.12.4;
# USAGE: <perlscript> <*.txt>
my (%hash, $key, $value);
my ($col1, $col5, $sum, $rowdata, $line, $outfile, $infile, @column5);
foreach my $file (@ARGV) {
#name output file
$outfile = $file . '.csv';
#file check
die "Oops! A file called '$outfile' already exists.\n" if -e $outf
+ile;
open (IN, "<", "$file" ) or die "Cannot open file $!";
open (OUT, ">", "$outfile") or die "Cannot open file: $outfile
+ $!";
while (<IN>) {
chomp ($line = $_);
next if $line =~ /NoCoordinateCount.*/;
next if $line =~ /^$/;
($col1, undef, undef, undef, $col5 ) = split(/\s/, $line);
$sum += $col5;
$key = $col1;
$value = $col5;
$hash{$key} = $value;
}
foreach (sort keys %hash) {
print OUT $_, "," , $hash{$_}/$sum, "\n";
}
$sum = 0; #reset sum for each file
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.