Thanks for your suggestions.

I switched to file globbing. It seems simpler and is built into perls greater than 5.6.0

I eliminated one of the map lines as the glob now returns the full path. I think this sped things up a bit

I switched to mod ing by three as you suggested. % is probably 100 times more expensive than addition and eliminated but 1/100000 of a second isn't much more than a 1/1000 and the modulo is easier to read.

I left the error checking in. --A few times it was handy to check to see that stat actually succeeded

I left the sort in, I do want the most recent images first. I also suspect that the $a $b variables supplied by sort are quicker than $_[0] and $_1

I left the printed comments and the print "content-type: text/html\n\n"; in as the former help me figure out problems when looking at HTML source and the later <large>:-></large> is needed for the HTML to display.

#!/usr/local/bin/perl require 5.6.0; use warnings; use strict; use File::Spec::Functions; use File::Basename; my $gHTMLPath='/go/pics/thumbs/'; my $gthumb_dir=catdir('..','go','pics','thumbs'); ################################## # # # no user servicable parts below # # # ################################## if ($gthumb_dir=~m|/|){ $gthumb_dir.='/'; }elsif ($gthumb_dir=~m|\\|){ $gthumb_dir.='\\'; }elsif ($gthumb_dir=~m|:|){ $gthumb_dir.=':'; # we're on a Mac ??? not tested }else{ die "on unknown OS or couldn't get path at start \n" } # FILE: listthumbs.pl REVISION DATE: 09-13-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 @result=glob("$_[0]*.{jpg,jpeg,png}"); if (0==@result) { die "couldn't glob in get_Files()"; } return @result; } sub main(){ my @pics=get_files($gthumb_dir); @pics=sort size_cmp @pics; for (my $i=0;$i<@pics;$i++){ $pics[$i]=basename($pics[$i]); } print "content-type: text/html\n\n"; print "<!-- start code by $0 -->\n" ; my $count=0; print '<TABLE>'; print '<TR>'; foreach (@pics){ $count++; print "<TD width=200 align=left>\n"; print '<IMG SRC='. $gHTMLPath . $_ .'><BR>'."\n"; print ; print "</TD>\n"; if (0==$count% 3){ print "</TR>\n"; print '<TR>'; } } # end loop print "\n</tr>" if 0 != (3 % $count); print '</TABLE>'; print "there are $count thumbs<BR>\n"; print "<!-- end code by $0 -->\n" ;


--mandog

In reply to Re: request criticism web page with images in dir (File::Find File::Spec File::glob) by mandog
in thread request criticism web page with images in dir (File::Find File::Spec) by mandog

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.