#!/usr/local/bin/perl require 5.6.0; use warnings; use strict; use File::Spec::Functions; my $gthumb_dir=catdir('..','go','pics','thumbs'); my $gHTMLPath='/go/pics/thumbs/'; ################################## # # # no user servicable parts below # # # ################################## # FILE: listthumbs.pl REVISION DATE: 09-12-2001 # # CGI to list display jpeg, gif & png files in a directory ##################### # Declarations # ##################### sub get_files($); # get a list of jpeg files; sub size_cmp(); # used in sort function compares two values sub main(); # ###################### # Run our program # ###################### main(); ###################### # Definitions # ###################### sub size_cmp(){ my @a_stat=stat($a) or die "couldn't stat\n $a \n$!\n"; my @b_stat=stat($b) or die "couldn't stat \n $b\n$!\n"; #7 is size so # sorting by size puts the duplicates next to each other #9 is modification time # sort reverse order return $b_stat[9] <=> $a_stat[9]; } sub get_files($){ my $myDir=shift; my @result_files; my @files; opendir(dirHandle,$myDir) || die "$! Couldn't open $myDir\n"; @files=readdir(dirHandle); foreach (@files){ if ($_=~m/\.((jpg)|(jpeg)|(gif)|(png))$/im){ push (@result_files,$_) ; } } closedir(dirHandle); return @result_files; } sub main(){ my @pics=get_files($gthumb_dir); @pics=map(catfile($gthumb_dir,$_),@pics); @pics=sort size_cmp @pics; for (my $i=0;$i<@pics;$i++){ $pics[$i]=~m/(\w*\.\w*$)/; $pics[$i]=$1; } print "content-type: text/html\n\n"; print "\n" ; my $cols=3; my $count=0; print ''; print ''; foreach (@pics){ $count++; --$cols; print "\n"; if ($cols==0){ $cols=3; print "\n"; print ''; } } # end loop if ($count % 3!=0){print '';} print '
\n"; print '
'."\n"; print ; print "
'; print "there are $count thumbs
\n"; print "\n" ; }