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

Hi Tony,

As long as your line length is constant, this'll do the trick.

my $source = '12345123451234512345';
my $line_length = 5;

# Convert $source into an array, e.g.,
# ( '12345', '12345', '12345', '12345' )
# Assumes that length($source) % $line_length == 0
my @array = $source =~ /\d{$line_length}/g;

# Since we'll be looking at the individual digits
# of each array element, we might as well convert
# array elements into arrays of their digits, e.g.,
# ( [ 1..5 ], [ 1..5 ], [ 1..5 ], [ 1..5 ] )
@array = map { [ split // ] } @array;

# This first for loop determines the order in which
# digits from each array element are displayed
for my $digit_index (reverse 0..$line_length-1) {
  # On each line, print the $digit_index'th digit
  # of each element
  foreach my $elem (@array) {
    print $elem->[$digit_index];
  }
  print "\n";
}

Cheers,
David

Reply via email to