Take a look at the data structures cookbook. Your basic approach should be to build an array of arrays (actually array references). You can then loop over your array to generate a new array.

Here's an example of working with an AoA. In this example, key things to understand are how data structures are built up in perl, and how to use the map function to make a new array out of an existing one. If you can't grok map right away, you can use a foreach or while loop instead.

use strict; use warnings; use diagnostics; use Data::Dumper; # Generate primary data array my @data = map {[ split ]} <DATA>; print Dumper \@data; my $first = $data[0]; my @first_vs_x = map { [ "$first->[0] vs $data[$_][0]", # Generate new name entry $first->[1] - $data[$_][1], # Fred - X $first->[2] + $data[$_][2], # Fred + X ] } 1..$#data; # use indexes from 1 to last in @data print Dumper \@first_vs_x; __DATA__ Fred 15 20 Wilma 23 19 Barney 1 22 Betty 99 63

It's worth noting that this example keeps everything in memory, and for large data sets, you'll need to use a different approach.


TGI says moo


In reply to Re: processing columns of text by TGI
in thread processing columns of text by sitnalta

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.