sub print_rec { #### opendir DIR, shift; #### if(!/\.|\.\./ && -d $_) #### return print_rec($_); #### elsif (!-d) { ... } #### #!/usr/bin/env perl -l use strict; use warnings; use autodie; use constant INDENT => ' ' x 4; my $starting_dir = '.'; print_dir_listing($starting_dir, ''); sub print_dir_listing { my ($path, $indent) = @_; opendir my $dh, $path; for (readdir $dh) { next if /^(?:\.|\.\.)$/; if (-d "$path/$_") { print "${indent}DIR: $_"; print_dir_listing("$path/$_", $indent . INDENT); } else { print "$indent$_"; } } } #### ... DIR: mastering_perltk_demo_code mastperltk_examples.MANIFEST mastperltk_examples.tar.gz DIR: mptk-code14 DIR: ch01 hello-world DIR: ch02 play-with-pack1 play-with-pack2 DIR: ch03 banner fontviewer DIR: ch04 ...