sub rec_delete { my $id = shift; my @kids = (... select id where parent = $id ...); delete($id); rec_delete($_) for @kids; }