Есть код:
#!/usr/bin/perl -w
use strict;
use warnings;
use v5.10;
my $messages = [
	{
		id			=> 1,
		root_id		=> 0,
		reply_to	=> 0,
		from_id		=> 1,
		to_id		=> 2,
		content		=> "Hello!\t"
	},
	{
		id			=> 2,
		root_id		=> 1,
		reply_to	=> 1,
		from_id		=> 2,
		to_id		=> 1,
		content		=> "> Hello!\tHi\t"
	},
	{
		id			=> 3,
		root_id		=> 0,
		reply_to	=> 0,
		from_id		=> 1,
		to_id		=> 2,
		content		=> "Privet! Kak dela?"
	},
	{
		id			=> 4,
		root_id		=> 3,
		reply_to	=> 3,
		from_id		=> 2,
		to_id		=> 2,
		content		=> "nHx!"
	},
	{
		id			=> 5,
		root_id		=> 1,
		reply_to	=> 2,
		from_id		=> 1,
		to_id		=> 2,
		content		=> ">> Hello!\t> Hi\tWhat's up?\t"
	}
];
sub get_tree {
	my ($tree, $pid) = @_;
	my $msg = "\n";
	foreach my $row (@{$tree}) {
		if($row->{reply_to} eq $pid) {
			$msg .= "# ".$row->{content}.&get_tree($tree, $row->{id});
		}
	}
	return $msg;
}
print &get_tree($messages, 0, 0);Как сделать проход не только по `reply_to`, но и сначала по `root_id`? `root_id` - идентификатор сообщения-корневого узла дерева треда.



