Letterhd.gif (3329 bytes) Celebrating 20 Years
Home Contact us Search Sitemap

Perl Excerpt

MGT Computer Solutions >> Services >> Custom Programming >> Perl >> Perl Excerpt

These snippets of Perl v.5 code are from routines which display individual pictures from a photo gallery.  They develop the URLs for "previous" and "next" links that aid browsing single pictures in the gallery.


The following snippet only determines the required URLS.

#!/usr/bin/perl -w
use strict ;
use CGI ':standard';

  .
  .
  .

#calculate previous and next gallery item links
my ($Prev, $Next) = ("Previous", "Next");
my $GalleryFile = "+<../image.htm" ;
if ( $ImgPath eq "/cards/" ) { 
  $GalleryFile = "+<../card.htm" 
} 
#if we can't  open the gallery's html file, we are done with links
if (open(GALLERYFILE, $GalleryFile) ) {
  #complete list of gallery item links is right in the gallery's html file
  local $/;
  binmode(GALLERYFILE) ;
  my $FileBuf = <GALLERYFILE> ;
  close(GALLERYFILE) ;

  #pick out the links we want - look for neighbors of $EncodedURL
  if ( $FileBuf =~ m#cgi-bin(/v\.pl\?.{1,40}?nm=.{1,40}?)">.{1,300}?cgi-bin/v\.pl\?.{1,40}?nm=$EncodedURL"#s ) {
    $Prev = "<a href=.$1><strong>Previous</strong></a>" ;
  }
  if ( $FileBuf =~ m#cgi-bin/v\.pl\?.*?nm=$EncodedURL">.*?cgi-bin(/v\.pl\?.*?nm=.*?)"#s ) {
    $Next = "<a href=.$1><strong>Next</strong></a>" ;
  }

  .
  .
  .


The following snippet is from another version of the photo gallery routine.  This version also parses the gallery URLs into an array for later reference.
  .
  .
  .

#calculate previous and next gallery item links
my ($Prev, $Next) = ('Previous', 'Next') ;

#define link count and pointer to current page for later reference
my ($count, $current) = (0, -1) ; 

#if we can't  open the gallery's html file, we are done with links
if (open(GALLERYFILE, "+<../image.htm") ) {
  #create list of gallery item links from gallery's html file
  local $/;
  binmode(GALLERYFILE) ;
  $FileBuf = <GALLERYFILE> ;
  close(GALLERYFILE) ;

  #split the file on "cgi directory/script name" because it's handy
  @arr = split(m#cgi-bin/#, $FileBuf) ;
  #lose the first piece as it starts with <html etc.
  shift @arr ;
  #remaining elements all start with the significant part of the desired url
  $count = (@arr) ;
  $FileBuf = '' ;

  #search the list for the current item's entry
  for (my $ix=0; $ix < $count; $ix++) {
    #clean up array entries as we go
    $arr[$ix] =~ s/>.*$//s ;
    # test for current page
    if ( $arr[$ix] =~ /=$EncodedItem"/ ) {
      #remember this location
      $current = $ix ;
    }
  }

  if ( $current != -1 ) {
    #current item found, build references for its neighbors
    if ( $current < $count - 1 )  {
      $Next = '<a href="./' . $arr[$current+1] . '><strong>Next</strong></a>' ;
    }
    if ( $current > 0 )  {
      $Prev = '<a href="./' . $arr[$current-1] . '><strong>Previous</strong></a>' ;
    }
  }

  .
  .
  .


"The Miracle Workers of Computing" since 1989
Celebrating 20 Years

Any trademark appearing on this page is the property of its owner.

Home Contact us Search Sitemap

Please send us your questions or comments about this web site.
Design, Implementation and Contents Copyright © 1998-2009 MGT Computer Solutions.  All rights reserved.
Last modified: August, 2009