Python vs Perl (an example)

Nick Monyatovsky mon-at-cox-net
Wed Mar 31 20:38:49 EST 2004


>Hello,
>
>I recently wrote a Perl version of pyAlbum.py [1] -- a
>Python script to create an image album from a given
>directory -- plAlbum.pl [2].
>
>It made me realize how easy-to-use Python is.
>
>[1]
>http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/271246
>[2]
>http://www.premshree.resource-locator.com/cgi-bin/source.pl?file=../perl/plAlbum.pl
>
>-Premshree Pillai
>
>=====
>-Premshree
>[http://www.qiksearch.com/]
>


I cannot help, but make a couple of observations:

1. Although you point about Python being easy has some merit,
    I would not bring up an awkwadly written Perl script to back up
    that argument.

2. There are many things which are very easy to do in Perl, and
    are very cumbersome in Python. Regular expressions is a
    vivid example. Saying very generically that Python is easier
    than Perl is just an invitation for flame wars.

3. Lastly, Perl is not aspiring to or has ever claimed to
    be easy. That is not its strength and attraction.
   (Although, on a simple example like this, a more conventional
   Perl script (see below) is pretty comparable).

If you'd like to demonstrate that Python is easier than Perl, you'll
need to find a better case.

----------------- pyAlbum.pl -------------------------

=head

pyAlbum.pl

  Perl version of the pyAlbum.py script
  that creates an album
  of images from a given directory

(c) 2004 Premshree Pillai (27/02/04)
http://www.qiksearch.com/

=cut

use Tk::Image;

my @files;
my $count = 0;
my $total = 0;


sub getDir 
{
    print "Enter the directory to read images from (rel/abs path): ";
    $dirName = <STDIN>; chomp $dirName;
    -d $dirName or warn "Directory does not exist!" and getDir();
}


sub retPrevFile 
{
    my $index = shift;
    return "" unless $index;
    return sprintf '« <a href="%s.htm">Previous</a>',
$files[$index - 1];
}


sub retNextFile 
{
    my $index = shift;
    return "" if $index == $#files;
    return sprintf '<a href="%s.htm">Next</a> »', $files[$index
+ 1];
}

sub retPipe 
{
    my $index = shift;
    return " | " if $index and $index < $#files;
    return "";
}

sub getSlideName 
{
    print "Enter base name for album: ";
    $slideName = <STDIN>; chomp $slideName;
    -d "$dirName/$slideName" and warn "Directory $slideName exists!"
and getSlidename();
    mkdir "$dirName/$slideName" or die;
}

my $format = q[
<html>
   <head>
   <title>%s</title>
   <style type="text/css">
	  body	{font-family:Trebuchet MS, Arial, Verdana; 
                 font-size:10pt; font-weight:bold}
	  h4	{color:#CCCCCC}
	  a	{font-family:Trebuchet MS, Arial, Verdana; 
                 font-size:10pt; font-weight:bold; 
                 text-decoration:none}
	 a:hover {font-family:Trebuchet MS, Arial, Verdana; 
                  font-size:10pt; font-weight:bold; 
                  text-decoration:underline}
         img	{border:#000000 solid 1px}
   </style>
   </head>
   <body>
      <center><h2>%s</h2></center>
      <center><h4>%s (%s/%s)</h4></center>
      <center><a href="../%s"><img src="../%s"></a></center>
      <center>%s%s%s</center>
   </body>
</html>
];


getDir();
getSlideName();

print "Enter a title for the album: ";
$title = <STDIN>; chomp $title;

print "Enter image scaling factor (e.g., 0.5, <enter> for default) ";
$scale = <STDIN> || '1.0'; chomp $scale;

chdir $dirName; 
@files = <*.*>;
$total = scalar(@files);
chdir $slideName;

foreach $file (@files) 
{
    open FILE , ">$file.htm";
    printf FILE $format, $title, $title, $file, $count + 1, $total,
$file, $file, 
    retPrevFile($count), retPipe($count), retNextFile($count);
    close FILE;
    $count++;

    warn "File $file.htm created.\n"
}

print "\n", "Album created!\n";





More information about the Python-list mailing list