#!/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$_"; } } }