#!/usr/bin/perl use strict; use warnings; use DBI (); traverse_tree($ARGV[0]); exit; sub traverse_tree { my $root_id=shift; my $dbh=DBI->connect('dbi:Pg:dbname=test'); my $sql = 'SELECT tt.node_level,tt.node_id,tree.name' . ' FROM traverse_tree(?) tt JOIN tree ON node_id=tree.id'; my $sth=$dbh->prepare($sql); $sth->execute($root_id); while ( my $node = $sth->fetchrow_hashref() ) { print $node->{'node_id'}, " ", " " x $node->{'node_level'}, $node->{'name'}, "\n"; } }