Hi group,
My Unicode blues continues… One more question on handling Unicode.
Does Tree::Nary module works with Unicode data? I am trying to store some
Unicode strings (UTF-8 to be precise) as Nary Tree.
When I retrieve the value of the nodes from the tree, it produces the output as
boxes, even though I am using binmode for activating the utf-8 layer and am
reasonable sure that I am not making any mistakes. I should also mention that,
the same code works well with normal data (such as English strings) Anyway,
here is the code:
Thanks in advance.
-B
---
The file ‘temp1.txt’ will have this sequence: पढ़ते है . राम पुस्तक एक
use Tree::Nary;
use warnings;
open(O, ">children.txt");
binmode (O, ":utf8");
open(I, "<utf8", "temp1.txt");
while(<I>) {
chomp;
@words = split(/\s+/, $_);
}
close(I);
$root = Tree::Nary->new($words[0]);
$node = Tree::Nary->new();
$node101 = $node->insert_data($root, 1, $words[1]);
$node102 = $node->append_data($root, $words[2]);
$node103 = $node->prepend_data($root, $words[3]);
$node231 = $node->insert_data($node103, 1, $words[4]);
$node232 = $node->prepend_data($node103, $words[5]);
undef $elements;
$node->traverse($root, $Tree::Nary::PRE_ORDER, $Tree::Nary::TRAVERSE_ALL, -1,
\&building_node);
print O "Elements of the Tree : $elements\n";
$total_nodes = $node->n_nodes($root, $Tree::Nary::TRAVERSE_ALL);
print O "The tree has $total_nodes nodes in total\n";
close(O);
sub building_node() {
my $node = shift;
my $child = $node->{data};
if(!defined $elements) { $elements .= $child; }
else { $elements .= " ".$child; }
return ($Tree::Nary::FALSE);
}