$ cat pm_1198523.pl #!env perl use strict; use warnings; my $rData = [ [ 1, 3, 5, 7, 9 ], [ 0, 2, 4, 6, 8 ], [ 0, 0, 3, 6, 9 ], [ 0, 0, 0, 8, 4 ], [ 0, 0, 0, 0, 3 ] ]; bless $rData, 'foo'; print $rData->fetch(1,4), "\n"; print $rData->fetch(4,1), "\n"; print $rData->fetch(3,1), "\n"; print $rData->fetch(1,3), "\n"; package foo; sub fetch { my ($self, $r, $c) = @_; ($r, $c) = ($c, $r) if $c < $r; return $self->[$r][$c]; } $ perl pm_1198523.pl 8 8 6 6