Re: [cam.pm] Programming guidlines

[email protected] (Stephen Turner)
Newsgroups perl.golf
Message-ID <Pine.LNX.3.96.1020915100558.899A-100000@gentoo>
Lucy McWilliam wrote:
> 
> I came across this on openchallenge.org and it set me wondering.
> 
> "The challenge consists of writing coding guidelines for experienced
> programmers wishing to adopt Perl. These guidelines are not intended for
> "Perl hackers", but for the  ones who are most used to programming in C or
> other not-so-idiomatic languages. Those guidelines should be short
> enough, so that half an hour should be sufficient for a medium-level
> programmer to understand and be abble to use  them. They should give
> examples of clean way of implementing common operations and things to
> avoid."
> 

Perl idioms for C programmers? OK.

1) Regular expressions are usually the most efficient way of doing things,
even if they can be a little impenetrable.

2) $_ is very useful. Normally you try and get the variable you're working
on into $_, so that you can edit it, print it, etc. without having to keep
stating the variable name explicitly.

3) Use of short-circuiting operators.
  $a&&print
is more idiomatic than 
  print if$a
or
  if($b){print}

4) Never use semi-colons at the end of blocks or your program.
  for$i(1..10){$_*=$i;print}
not
  for$i(1..10){$_*=$i;print;}

5) Leave out any superfluous space. Save whitespace for Python. So in the
previous example, you should never write anything like
  for $i (1..10) {
    $_ *= $i;
    print
  }

6) Never use tr///. y/// is always one stroke better.



(Cc:'ed to [email protected]. Just in case anyone doesn't know me well enough
to have got the joke yet. :-)

-- 
Stephen Turner, Cambridge, UK    http://homepage.ntlworld.com/adelie/stephen/
"This is Henman's 8th Wimbledon, and he's only lost 7 matches." BBC, 2/Jul/01
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.