in reply to Re: print arrays a(i), b(i,j) c(i,j)
in thread print arrays a(i), b(i,j) c(i,j)

Thanks Grandfather, your code is close to what I want to do:
for my $j (0 .. $#energy_bin) { printf "%.5f %.5e %.5f %.5e %.5f\n", $energy_bin[$j], $spec_cps[$j][0], $sigma_cps[$j][0], $spec_cps[$j][1], $sigma_cps[$j][1]; }
How would I put a loop for the other array index( ie: 0, 1, 2,...,
and also make the printf format entries flexible for
different value of the array index ( ie 10 cols vice 4, etc)?

Replies are listed 'Best First'.
Re^3: print arrays a(i), b(i,j) c(i,j)
by GrandFather (Saint) on Feb 13, 2006 at 20:20 UTC

    The following probably gets close to what you want to do. Note $#{$spec_cps[$j]} is used to get the index of the last item in the array referenced by $spec_cps[$j]. See Re^2: print arrays a(i), b(i,j) c(i,j) if you don't understand what I mean by that.

    use strict; use warnings; my @energy_bin = (1, 2, 3); my @spec_cps = ([5, 6], [7, 8], [9, 10]); my @sigma_cps = ([15, 16], [17, 18], [19, 110]); for my $j (0 .. $#energy_bin) { printf "%.5f", $energy_bin[$j]; for my $i (0 .. $#{$spec_cps[$j]}) { printf " %.5e %.5f", $spec_cps[$j][$i], $sigma_cps[$j][$i]; } print "\n"; }

    Prints:

    1.00000 5.00000e+000 15.00000 6.00000e+000 16.00000 2.00000 7.00000e+000 17.00000 8.00000e+000 18.00000 3.00000 9.00000e+000 19.00000 1.00000e+001 110.00000

    DWIM is Perl's answer to Gödel