A "quick and dirty" way to do this task is to use the perl Command Switches "-F" to do the input, main loop, and splitting. Use an END block to print the summary. Note that the variable @sums must be a declared as a package variable in order to access it in the END block.
(Anyone know a better way?)
#!perl -F','
use strict;
use warnings;
use feature 'state';
state $header = 1;
our @sums;
if ($header) {
printf "%-24s" . " %4s"x10,
'Number', @F[1..10];
$header = 0;
next;
}
chomp $F[10];
for (reverse 2..10) {
$F[$_] = ( ( $F[$_-1] xor $F[$_] ) ? .5 : 0 );
$sums[$_] += $F[$_];
}
$F[1] = 0;
$sums[1] += $F[1];
printf "%-24s " . " %3.1f "x10 . "\n", @F;
END{
our @sums;
printf '*'x75 . "\n";
printf "%-24s" . " %3.1f "x10 . "\n",
"Sum of weights", @sums[1..10];
printf '*'x75 . "\n";
}
-
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.
|