Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Printing multiple arrays as multiple column

by gopalr (Priest)
on Apr 12, 2005 at 05:28 UTC ( [id://446853]=note: print w/replies, xml ) Need Help??


in reply to Printing multiple arrays as multiple column

Hi,

Also List::MoreUtils module done this job

Example

use strict; use List::MoreUtils qw(:all); my @array1 = qw /ab bc cd de/; my @array2 = qw /cc dd ee gg/; my @array3 = qw /12 34 56 78/; my $result = each_array(@array1, @array2, @array3); while ( my ($a, $b, $c) = $result->() ) { print "\n$a $b $c"; }

Output

ab cc 12 bc dd 34 cd ee 56 de gg 78

Thanks

Gopal.R

Replies are listed 'Best First'.
Re^2: Printing multiple arrays as multiple column
by tlm (Prior) on Apr 12, 2005 at 12:58 UTC

    I'ts always seemed to me regrettable that List::MoreUtils chose to take the iterator approach to this. I find the transpose function a lot more useful:

    sub transpose { map { my $i = $_; [ map $_->[ $i ], @_ ] } 0 .. $#{ $_[0] } } my @array1 = qw /ab bc cd de/; my @array2 = qw /cc dd ee gg/; my @array3 = qw /12 34 56 78/; print "@$_\n" for transpose \( @array1, @array2, @array3 ); __END__ ab cc 12 bc dd 34 cd ee 56 de gg 78
    As shown above, iterating throught the transpose is as easy as iterating through any other array, and much more flexible (e.g. one can easily iterate through the rows in reverse order, etc.).

    One handy use for the transpose is to feed multi-arg functions via map; e.g.:

    my @firsts = ( 1, 2, 3, 4 ); my @seconds = qw( w x y z ); my @thirds = ( 5.6, 7.8, 9.0, 1.2 ); my @foos = map foo( @$_ ), transpose \( @firsts, @seconds, @thirds ); # @foos gets foo( 1, 'w', 5.6 ), foo( 2, 'x', 7.8 ), etc.
    Plus, the transpose of a numerical matrix is a mathematically useful entity of its own right (though admittedly, one wouldn't use Perl AoA's for serious matrix-oriented computation, but rather something like PDL.)

    the lowliest monk

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://446853]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-04-25 19:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found