#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; use Data::Rmap qw/ rmap_array /; use Tree::Visualize; use Tree::Simple; use Tree::Simple::Visitor::FromNestedArray; my $root = [ [ [ [ [[["a", "b"], "c"], ["d", "e"]], [[["f", "g"], "h"], [["i", "j"], ["k", ["l", "m"]]]], ], ["n", [[["o", "p"], "q"], ["r", "s"]]], ], ["t", ["u", "v"]], ], [["w", ["x", "y"]], "z"], ]; dd $root; rmap_array { my( $key, @rest ) = @$_; my @new; for my $one ( $key, @rest ){ push @new, '' if ref $one; push @new, $one ; } $_ = \@new; return; } $root; dd $root; my $visitor = Tree::Simple::Visitor::FromNestedArray->new(); $visitor->setArrayTree( $root ); my $tree = Tree::Simple->new(Tree::Simple->ROOT); $tree->accept($visitor); print Tree::Visualize->new( $tree, 'ASCII', 'TopDown', #~ 'Diagonal', ## fail to throw exception #~ 'LeftSide', ## fail to throw exception #~ 'RightSide', ## fail to throw exception )->draw(), "\n\n";