For not just purely academic reasons, I am wondering if there is a
better/builtin way of converting a PDL of arbitrary size into its pure
perl equivalent. (call it the inverse of the pdl() function). Here's
what I came up with, is there something better or can someone be more
clever?

#!/usr/bin/env perl

use strict;
use warnings;

use PDL;
use Test::More tests => 1;

my $array = [
  [[1,2],
   [3,4]],
  [[5,6],
   [7,8]],
  [[9,10],
   [11,12]]
];
my $pdl = pdl $array;

is_deeply( unroll($pdl), $array, "back convert 3d");

sub unroll {
  my $in = shift;

  if (ref $in and ref $in eq 'PDL') {
    if ($in->ndims > 1) {
      return [ map {unroll($_)} dog $in ];
    } else {
      return [list $in];
    }
  } else {
    return $in;
  }

}

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to