my @vslice = (['b','c'],
['i','j'],
['y','z']);
####
my @yxslice = ( ['b','i','y'],
['c','j','z'] );
####
#! perl -slw
use strict;
use Data::Dumper;
sub vslice {
map{
[
@{$_}[@_]
]
} @{+shift};
}
sub yxslice {
my $aref = shift;
map{
my $i=$_;
[
map{
$_->[$i]
} @$aref
]
} @_;
}
my @arr = (['a','b','c','d'],
['h','i','j','k'],
['w','x','y','z']);
my @vslice = vslice \@arr, 1..2;
print Dumper \@vslice;
my @yxslice = yxslice \@arr, 1..2;
print Dumper \@yxslice;
__END__
C:\test>240941
$VAR1 = [
[ 'b', 'c' ],
[ 'i', 'j' ],
[ 'x', 'y' ]
];
$VAR1 = [
[ 'b', 'i', 'x' ],
[ 'c', 'j', 'y' ]
];
####
sub vslice (\@@) { map{ [@{$_}[@_]] } @{+shift}; }
sub yxslice (\@@) {
my $aref = shift;
map{ my $i=$_; [ map{ $_->[$i] } @$aref ] } @_;
}