sub turn_tables { my ( $pdl, $dir ) = @_; # dir = 0 => forward # 1 => backward my @t = ( # transform sub { $_[0]-> copy-> transpose-> slice( '-1:0, X' )}, # 90 sub { $_[0]-> copy-> slice( '-1:0, -1:0' )}, # 180 sub { $_[0]-> copy-> transpose-> slice( 'X, -1:0' )}, # 270 ); @t = reverse @t if $dir; for ( 1 .. 3 ) { my $s = $pdl-> slice( "X, X, $_" ); $s .= $t[ $_ - 1 ]-> ( $s ) } }