#!/usr/bin/perl

use strict;
use warnings;

#my @matrix = (
#	[1,2,3,4,5,6],	
#	[5,7,8,3,1,0],	
#	[7,1,2,3,5,9],	
#	[9,7,4,3,9,8],	
#	[2,3,3,0,5,6],	
#	[1,9,5,4,7,9]	
#);
my @matrix = (
	[1,2,3,4,5],	
	[5,7,8,3,1],	
	[7,1,2,3,5],	
	[9,7,4,3,9],	
	[2,3,3,6,5],	
);
my ($right, $down, $i, $j, $k, $up, $width, $height, @array) ;
$height = @matrix;
$width = @{$matrix[0]};
$i = $j = $k = $up = 0;


print "hoehe: $height \nbreite: $width\n";
$array[$k] = $matrix[$i][$j];
for(;;){
	if (!$down && !$right){
			if ((!$i || $i == $height-1) && ($j+1 < $width)) {
				$right = 1;
				$up = 1 if ($i == $height-1);
				$array[++$k] = $matrix[$i][++$j];
				next;
			}
			elsif((!$j || $j == $width-1) && ($i+1 < $height)){
				$down = 1;
				$up = 1 if ($j == 0);
				$array[++$k] = $matrix[++$i][$j];
				next;
			}
			last;
	}
	if($up && ($right || $down)){
		while($i-1 >= 0 && $j+1 < $width){
			$array[++$k] = $matrix[--$i][++$j];
		}
		$up = $right = $down = 0;
		next;
	}
	if(!$up && ($down || $right)){
		while($j-1 >= 0 && $i+1 < $height){
			$array[++$k] = $matrix[++$i][--$j];
		}
		$right = $down = 0;
		next;
	}
}

foreach my $ref (@matrix) {
	print join("  ", @$ref)."\n";
} 
print "\n----------linearisiert----------\n" .  join(" ", @array) . "\n--------------------_\n";

