[Tutor] Are you allowed to shoot camels? [kinda OT]

Liam Clarke cyresse at gmail.com
Thu Feb 3 00:18:00 CET 2005


Hi, 

Had the *ahem* joy of learning Perl last night. Egad. Wrote the script
in Python to get it right, and then 'translated' it to Perl. Does the
style of coding Python engenders suit the Perl environment in anyone's
experienc? AFAI can see there is no real 'style' to Perl, apart from
white noise of non alphanumeric characters.

Just wondering if I should bite the bullet and code from scratch in
Perl, or if my Python - Perl is Ok.

Two codes are here - 

Python http://www.rafb.net/paste/results/BVaym940.html
Perl http://www.rafb.net/paste/results/LromA876.html

[OT begins]

By the way, I'm only learning Perl because I need to script some
routine HTML maintenance, and I can't be bothered applying to head
office IT for an install of Python, as the justification involved is
ludicrous, especially considering that my role as defined does not
include scripting.

First impressions of Perl - 

1) I'll use Perl for the regex stuff from now on, Perl is obviously
built for this.

2 ) There's More Than One Way To Do It makes debugging hard - i.e. 
close INFILE; & close (INFILE); are both valid. I like one syntax, cos
it's easier to remember.

3) Some stuff is counter-intuitive - 
$lenOfModList = @moddirList is the Perl equivalent of lenofModList =
len(moddirList)
@someArray = (@someArray, $newValue) is the same as someArray.append(newValue)
I couldn't figure this one out until I read that Perl automatically
flattens lists.

Also, why doesn't if ( not $d eq "a" && not $d eq "c") evaluate to
true for $d = "b" when
if (not $d eq "a") evals to true and if ($d ne "a" && $d ne "c") evals
true also? What's with that?

4) WHAT IS WITH THE STUPID SYMBOLS EVERYWHERE LARRY??!!

I'm not referring to the $ & @, I can see how they could be useful,
although with a list -

@dude = (1, 2, 3), to obtain the 2nd value I would expect $d = @dude[1], 
not $d  = $dude[1], that's counterintuitive also. 

Oh, no, what I'm referring to is stuff like @_, and @!, and @indexFile
= <INFILE> to read a whole file, and this - I hate Perl for this -
open OUTFILE, ">c:/python23/j/index.htm"

What's the difference between
open OUTFILE, "c:/python23/j/index.htm"   and
open OUTFILE, ">c:/python23/j/index.htm" ?

The first will open index.htm with the handle OUTFILE, to read... 
The second will open index.htm with the handle OUTFILE to write!.

Of course, the documentation I had didn't mention that. It just said
to open it and use
print FILEHANDLE $value; to write. Oh no, I had to find a CGI Perl
tutorial, which mentioned using &lst; to open and &gst; to write (or
something), which I guessed as lesser/greater than.

Why is the read/write modifier part of the filename??? Why is it a > ?
In my opinion, there's only one place a > sign should be, in an
inequality test.

So, Perl in my opinion - 

great for regexes
obviously based around *nix conventions.
Big hodge-podge, oozing with inconsistency. I'd hate to work
collaboratively on a Perl project.
Two steps up from Brainf**k in parts.
Obviously in need of a benevolent dictator a la Guido.

But then, I've been spoilt by clean, smooth (usually) Python. Lovely,
usually consistent Python. Aah, Pythonnnn.... *dreamy look*


[end OT rant]






-- 
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.


More information about the Tutor mailing list