At 4/3/2003 7:29 PM, [EMAIL PROTECTED] wrote:
> On Friday, April 4, 2003, at 12:48 PM, David Iberri wrote:
>> At 4/3/2003 6:05 PM, [EMAIL PROTECTED] wrote:
>>> ie I want to split up the array:
>>>
>>> array: 12345123451234512345
>>>
>>> to:
>>>
>>> 12345
>>> 12345
>>> 12345
>>> 12345
>>>
>>> I can do this easily just by printing to the file up till the correct
>>> line length (5) and then inserting a "\n" and starting a new line.
>>>
>>> Now I want to essentially rotate the values by 90 degrees:
>>>
>>> 5555
>>> 4444
>>> 3333
>>> 2222
>>> 1111
> The values in those placings are completely arbitrary.
Hi Tony,
Ah yes... I should have been more generic in my approach anyhow :-)
Here's a general (but slightly more obfuscated) solution:
my $line_length = 5;
my @source = qw( 120 110 100 90 80 115 105 95 85 75 110 100 90 80 70 105 95
85 75 65 );
# Build a list of array refs, where each reference points to an
# array of $line_length elements from @source
my(@array_refs);
push @array_refs, [ splice @source, 0, $line_length ] while @source;
# Now print out a transposed version of @array_refs
for my $index (reverse 0..$line_length-1) {
# On each line, print out the $index'th element of
# each array reference within @array_refs
print join(' ', map { $_->[$index] } @array_refs), "\n";
}
#
# Outputs:
#
# 80 75 70 65
# 90 85 80 75
# 100 95 90 85
# 110 105 100 95
# 120 115 110 105
#
That's probably closer to what you want, yes?
Cheers,
David