Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Re: Python vs Perl (an example)

Reply
Thread Tools

Re: Python vs Perl (an example)

 
 
Nick Monyatovsky
Guest
Posts: n/a
 
      04-01-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/Coo.../Recipe/271246
>[2]
>http://www.premshree.resource-locato...erl/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 '&laquo; <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> &raquo;', $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";


 
Reply With Quote
 
 
 
 
Ville Vainio
Guest
Posts: n/a
 
      04-01-2004
>>>>> "Nick" == Nick Monyatovsky <mon-at-cox-net> writes:

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

Saying very generically that Python regexps are more cumbersome than
Perl one is just an invitation for flame wars. I have heard that
statement quite often, yet nobody ever bothers to substantiate it.

Hint - you can do

s = re.sub
m = re.match

if the function names are too long for you. And you don't need to
re.compile the regexps beforehand, just pass them as strings to the
functions. And backslash escaping behaviour can be averted by r"raw
strings".

The actual regexp syntax is the same as w/ Perl. I guess that's why
they are often called 'perl-style' regexps.

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

This is c.l.py - I don't think there are many who would claim the
opposite. Actually, I think Python and Perl are so far apart in the
ease of use/complexity/elegance, it's not even funny.

I'll give some comments on the script anyway.

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

In Python there's no need for 'my' - every assignment makes the
variable local by default. This is a Good Thing, and I doubt you would
contest that.

Nick> sub retPrevFile
Nick> {
Nick> my $index = shift;

In Py, you just list the arguments in signature.

Nick> mkdir "$dirName/$slideName" or die;

This idiom is not necessary in Py. You just don't handle errors, the
program terminates w/ traceback automatically.

Nick> open FILE , ">$file.htm";
Nick> printf FILE $format, $title, $title, $file, $count + 1, $total,

Here's a clear inconsistency (FILE doesn't have $, others do). Things
like this make a language hard to understand. In Py you just have
objects.

--
Ville Vainio http://tinyurl.com/2prnb
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FAQ 2.17 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org? PerlFAQ Server Perl Misc 0 04-04-2011 10:00 PM
FAQ 1.4 What are Perl 4, Perl 5, or Perl 6? PerlFAQ Server Perl Misc 0 02-27-2011 11:00 PM
FAQ 2.17 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org? PerlFAQ Server Perl Misc 0 02-03-2011 11:00 AM
FAQ 1.4 What are Perl 4, Perl 5, or Perl 6? PerlFAQ Server Perl Misc 0 01-23-2011 05:00 AM
Perl Help - Windows Perl script accessing a Unix perl Script dpackwood Perl 3 09-30-2003 02:56 AM



Advertisments