Category: | Miscellaneous |
Author/Contact Info | Jonathan Clover jclovs |
Description: | I didn't like how Find:File Module worked for me and what I wanted to do so I created my own recursive program to print out a directory structure of my web directory, for new design purposes. So here it is hope someone finds it useful, and feel free to critque. |
#!/usr/bin/perl -w ##################################################### #####Web Site Directory Print ##### #####Copyright 2001, Jonathan Clover ##### #####Feel Free to Redistribute ##### ##### ##### #####Description: Program to Print out in plain ##### #####text tab-deliminated representation of a ##### #####directory structure. Has the ability to not##### #####include any directory, as well as allows ##### #####for a specific web directory to be ##### #####specified within the quiry string formated ##### #####like "?dir=clovs.com/about". ##### ##################################################### use strict; use CGI qw(:standard); my ($web_url, $web_dir, $default_dir, $tab, $header, @non_include); #################### ###Configurations### #################### #Home Page URL $web_url = "clovs.com"; #Home Web Directory $web_dir = "/home/clovs/www"; #Default Directory to Start in if you #wish it not to be the Home Web Directory #$default_dir = "/home/clovs/www"; #Tab String to use for print out $tab = "\ \ \ \ "; #CGI Header $header = "text/html"; #Files not to include #Those that start with . are never included #for obvious reasons(aka infinite recursion) #Regex accepted as values in list @non_include = ('_', #Front Page Hidden Folders 'Merchant2', #The Online Store Data Folder 'webstats'); #The Web Statstistics Folder ########################### ###End of Configurations### ########################### my $cur = CGI->new(); my $start; my $non_include = '^(\.|'.join('|', @non_include).')'; ###Allow for Param's from a web interface### if ( $cur->param("dir") ){ my ($nothing, $temp) = split($web_url,$cur->param("dir")); $start = $web_dir.$temp; } else { $start = $default_dir; } ###Calculate the number of tabs to be ###used when printing out results my @start = split('/', $start); my $tabs = $#start; ###Start the program and print out as plain text print header( $header ); print start_html(); dir_tree($start); print end_html(); ###Subrotines Below### sub dir_tree { my $dir = shift; my @dir = split('/', $dir); print $tab x ($#dir - $tabs), $dir[$#dir]."<br>\n"; if(-d $dir){ foreach (op_dir($dir)){ dir_tree($_); } } } sub op_dir { my $dir = shift; my @dir; opendir(DIR, $dir) || die("Couldn't open dir: $!"); foreach (sort by_lc readdir(DIR)){ if ($_ !~ m/$non_include/){ push(@dir, "$dir\/$_"); } } return @dir; } sub by_lc { lc($a) cmp lc($b); } |
|
---|
Replies are listed 'Best First'. | |
---|---|
(crazyinsomniac) Re: Dir Structure Print out
by crazyinsomniac (Prior) on Nov 14, 2001 at 11:58 UTC | |
Re: Dir Structure Print out
by chip (Curate) on Nov 14, 2001 at 07:13 UTC | |
Re: Dir Structure Print out
by rob_au (Abbot) on Nov 14, 2001 at 18:51 UTC | |
One more time
by jclovs (Sexton) on Nov 15, 2001 at 00:11 UTC |
Back to
Code Catacombs