#!/usr/bin/perl package namespace; use strict; sub hmmm { print "This is a sub!\n"; } sub printall { my $sp = shift; my $namespace = shift; my %names = eval("%" . $namespace); foreach my $name (keys %names) { print "package: $name\n"; if($name =~ /::$/) { print $sp; print "package: $name\n"; unless($name eq 'main::') { printall($sp . " ", $name); } } } } package main; namespace::printall("", "main::");