in reply to Group array in threes
You could keep a counter; and print each item followed by a comma if counter-mod-3, or by a newline otherwise:
@array = qw (1 1 0 2 0 1 3 0 0 4 1 1); my $i; print $_, ((++$i%3)?",":"\n") for (@array);
Update:
Per your other question, If (and it may in future) contain references how can i print those and not ARRAY(0x860be48) etc?, ref is your friend:
my $q = "Q"; my @p = qw(pee pea); my %h = ( one => 1, two => 2, three => 3); @array = ("1", \@p, "0", "2", "0", \$q, "2", "0", \%h, "4", "1", "1"); my $i; for my $a (@array) { $_ = ref($a); print ( /ARRAY/ ? join(':',@$a) : /HASH/ ? join(':',keys %$a) : /SCALAR/ ? $$a : $a ); print ((++$i%3) ? "," : "\n" ); }
|
|---|