Dive Deep Into Python Vs Perl Debate – What Should I Learn Python or Perl?

Often when a new programming language is introduced, there is a debate which starts amongst some of the genius minds in the industry wherein the language is compared with the one already spreading its roots. A kind of buzz often spreads in the IT industry and the new one is often compared on every aspect may it then be features, syntax or core cpu and memory aspects including GC time and all, with the existing one of its kind.

Many examples of such cases can be picked up and investigated from past including the debate between Java and C#, C++ etc. One of such case which drew a significant amount of attention was the debate between two languages which came out one after the other in short span i.e. Python and Perl.

Whereas Python was invented initially as a successor to ABC language merely as a “hobby” programming project (which would attract Unix/C hackers) for the author who named it after the series of his biggest star Monty Python.

Suggested Read: Getting Started with Python Programming and Scripting in Linux

Perl was just nearly around 2 years earlier as a Unix scripting language which intended to make report processing easier. It was a mixture of combination of many languages including C, awk, sed and shell script.

The thing which is worth noting is that these languages which evolved of different intentions are being constantly compared, which has made me study and figure out the reasons, of which some important ones are listed as below:

  1. Both targeted Unix Operating System, one for hackers and other to process reports.
  2. Both are object oriented (Python being the more) and interpreted, with one being strongly typed and clear when it comes to coding i.e. Python, and other allowing ugly typing with braces for representing a block i.e. Perl
  3. Both are opposite in principle when we say, Perl has many ways of doing a single task while python focuses on one and only one way of doing things.

Python vs Perl – Features Compared

Let’s dive deep into this debate and try to figure out the overall aspects where these two languages differentiate with one another. Also let’s try finding out the source of truth for many cliches which can be heard in the industry saying “Python is perl with training wheels” or “Python is similar to perl but different” so that we can try and conclude with an accurate solution to this never-ending debate.

1. Python’s Clean vs Perl’s Complex Syntax

Python takes huge advantage over Perl when it comes to code readability. Python’s code is lot more cleaner to understand than that of Perl even when reading code after years.

With indentation representing the block of code, and proper structuring, Python’s code is a lot more cleaner. On other hand Perl borrows its syntax from various programming languages like: C, shell scripting and even awk and sed filters when it comes to regular expressions.

Suggested Read: 15 Useful ‘sed’ Commands for Daily Linux System Administration Tasks

Apart from this, with ‘{‘ and ‘}’ representing a block of code and unnecessary addition of ‘;’ at end of each line, code in Perl could become a problem to understand if you read it after months or years because of its allowance of ugly scripting.

2. Perl’s Built-in Vs Python’s 3rd Party Regex and OS Operations Support

Perl language borrows its syntax from C and other UNIX commands like sed, awk etc. due to which it has way powerful and built in regex support without importing any third-party modules.

Also, Perl can handle OS operations using built-in functions. On the other hand Python has third-party libraries for both the operations i.e. re for regex and os, sys for os operations which need to be ensured before doing such operations.

Perl’s regex operations have ‘sed’ like syntax which makes it easy not only for search operations but also replace, substitute and other operations on string can be done easily and swiftly than python where a person needs to know and remember the functions which cater to the need.

Example: Consider a program to search for digit in the string in Perl and Python.

Python
Import re
str = ‘hello0909there’
result = re.findall(‘\d+’,str)
print result
Perl
$string =  ‘hello0909there’;
$string =~ m/(\d+)/;
print “$& \n”

You see the syntax for Perl is way easy and inspired by sed command which takes advantage over Python’s syntax which imports third party module ‘re’.

3. Python’s Advanced OO Programming vs Perl’s One Liners

One feature where Python overshadows Perl is its advanced OO programming. Python has extensive object oriented programming support with clean and consistent syntax while object OOP in Perl being outdated where package is used as a substitute for classes.

Suggested Read: Getting Started with Python Django Web Framework

Also, writing OO code in Perl will add a lot more complexity to the code, which would eventually make code difficult to understand, even subroutines in Perl are very difficult to program and eventually difficult to understand later.

On other hand Perl is best for its one liners which can be used on command line for performing various number of tasks. Also, Perl code can eventually do various tasks in less lines of code than python.

A short code example of both languages which highlights Perl ability to do more in less LOC:

Python
try:
with open(“data.csv”) as f:
for line in f:
print line,
except Exception as e:
print "Can't open file - %s"%e
Perl
open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
while(<FILE>) {
print “$_”; } 

Pros and Cons – Python vs Perl

In this section we will discuss about Pros and Cons of Python and Perl.

Python PROS:

  1. Has a clean and elegant syntax which makes this language a great choice as first programming language for novices who want to have a hands-on on any programming language.
  2. Has very advanced and inherent OO Programming, also thread programming in Python is way better than Perl.
  3. There are many application areas where Python is preferred and even it outperforms Perl. Like: Perl is preferred for CGI scripting but now a days Python’s Django and web2py like web scripting languages are becoming more popular and have huge attraction from the industry.
  4. Has several SWIG wrappers for different programming languages like: CPython, IronPython and Jython and development of these has preceded the development of SWIG wrappers for Perl.
  5. Python code is always well indented and easy to read and understand even if you are reading someone else’s code or even your code after years.
  6. Python is good for various applications like: Big Data, Infra Automation, Machine Learning, NLP etc, is has huge support of active communities because of being Open Source.

Python CONS:

  1. There are few areas where execution in Python is usually slower than that of Perl including: regex and string based operations.
  2. Sometimes it is difficult to get the type of variable in Python as in cases of very large code, you have to go till the end to get type of the variable which gets hectic and complex.

Perl PROS:

  1. Perl has powerful one liners and even ensures UNIX piping like syntax which can be used on command line to perform various tasks, also it is influenced by Unix and its command line programming so integrates many UNIX influenced commands in its coding.
  2. Perl is known for its powerful regex and string comparison operations as it is influenced by sed and awk like powerful UNIX tools. In case of regex and string operations like: substitution, matching, replacement, Perl outperforms python which would take few lines of code to achieve the same. Also many file I/O operations, exception handling are done faster on Perl.
  3. When it comes to a language for report generation, Perl has always been in the fame since its introduction as one of the main reasons for author to develop language like Perl was for report generation.
  4. Many application areas where Perl finds its use are Network Programming, System Administration, CGI Scripting (here Python is overcoming Perl with Django and web2py) etc.
  5. It is easy to identify type of variable with the symbols that Perl uses before them, like: ‘@’ identifies arrays and ‘%’ identifies hashes.

Perl CONS:

  1. Perl has very complex code which makes it difficult to understand for a novice. Subroutines, and even other symbols like: ‘$`’, ‘$&’ etc are hard to understand and program for a less experienced programmer. Also, Perl code when read would be difficult and complex to understand unless you have a quality experience.
  2. OO Programming in Perl is a bit out of date as it has never been known for OO programming and many operations like: threading is also less pronounced on Perl.

Conclusion

As seen above where both languages are good on their regard as per the applications they target, Python takes a bit of advantage over Perl as a first choice for a novice due to its clean and easy to understand code, where as on other hand Perl outperforms Python when it comes to string manipulation operations and some advanced one liners for UNIX like OS and various other operations it is known for.

So at the end it’s all upon the specific area you target. All your comments on this article are welcome and would request you to give your views on the topic if according to you Python wins or Perl.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Gunjit Khera

Currently a Computer Science student and a geek when it comes to Operating System and its concepts. Have 1+ years of experience in Linux and currently doing a research on its internals along with developing applications for Linux on python and C.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

35 Responses

  1. Moises Burset says:

    Are you really a python programmer? In Perl you can create clean or ugly code, it is up to you. I mean, forget the “ugly” programming capacity of Perl and you will have a “python like” language. It is named freedom ;-)

  2. Aniket Inge says:

    I think Perl’s OO support with Moose remains unsaid here. Moose is good enough that other programming languages have started copying it.

  3. Kefle says:

    Code cleanness and readability can not be seen as a feature of the language. It is rather limited to the programmer’s way of writing and experience to make code maintainable and readable. Perl’s syntax which is also common in other languages, makes it even familiar and understandable. The flexibility that Perl offers to write code in different ways is more of a strength than a weakness.

  4. Roman says:

    The example which is supposed to show the brevity of Perl over Python is bad: it just translates Python to Perl.

    The way to accomplish the task of printing every line in data.csv is the following:

    # perl -wnp -e '' data.csv
    

    That is to say, it takes 0 lines of Perl to do that vs. 6 lines of Python.

    And I say this as someone who doesn’t know Perl; I’m currently learning it from Tim Maher’s excellent Minimal Perl book, because I got tired of writing bash scripts with grep, awk, and sed – and writing a Python program for simple text processing tasks is often too verbose.

    From what I gathered, Perl is what one would be better off using instead of the aforementioned bash/grep/awk/sed combo: it was built for that purpose, and supports the syntax.

    On the other hand, I’ve used Python to write things like convex hull algorithm in 3D and scientific computing within the SAGE ecosystem; it was much more pleasant to do these things in Python than, say, Java or C++ (and clearly, it would be insane to do this in Perl).

  5. James says:

    The biggest aid/hindrance to readability is, always has been, and always will be, source code commenting. I find that gobbledegook code can be written just as easily in Python as in Perl, or any other language come to that (including Cobol).

    There’s no substitute for extensive in-line comments. Comment your code and you can pick it up years later and immediately see what it’s doing. That’s true whether it’s written in Python, Perl, C#, Assembler, whatever.

    Python vs. Perl – not a fair contest, they should be used for different things.

    The biggest issue I’ve seen with Python is the evangelists who think it’s the best thing since sliced bread, and that they can do anything with it. Only last week I came across a system written in Python which runs a database driven dynamic website.

    It had to call in so many outside libraries and packages that it’s a total mess. Understood only by the guy who wrote it 5 years ago, and he has long since moved on. Basically it replaces Apache and PHP but goodness knows why (it’s running on a LAMP server!). Probably the guy thought it was a challenge to write it in totally the wrong language.

    I bet he was chuffed when he finished it – probably took him 3 months to write something which I could’ve done in PHP in 3 days. Use the right tool for the job. Python or Perl? Design the system first THEN choose the tool.

    OO programming in Python? No – wrong tool! Use a language where OO is innate, not one where it’s been tacked on as an afterthought.

    (p.s. comparing say Django or Web2Py with Perl is unfair – a derivative is not the same as raw Python)

  6. Dominix says:

    Python centric bullshit

  7. J Cleaver says:

    Some of these perl examples don’t really reflect what’s more-or-less standard in the Perl community at any time since Perl 5 came out (15 years ago).

    Keeping in mind the vision of TMTOWTDI, your second Perl example:

    open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
    while() {
    print “$_”; }

    …really would be typically written as just:

    open (FILE, ”inp.txt”) or die “Can’t open file: $!”;
    print while ();

    As many others have pointed out, Perl has a huge amount of syntax flexibility despite its overtones of C heritage, and that allows people to write working code in a relatively ugly, inefficient, and/or hard-to-read manner, with syntax reflecting their experience with other languages.

    It’s not really a drawback that Perl is so expressive, but it does mean that the programmer should be as disciplined as the task warrants when writing it when it comes to understandable Perl idioms.

    • Gunjit Khera says:

      Thanks for Updating us with your knowledge and we would surely correct our code with the updated one as given by you.
      Stay Connected :-)

  8. David G. Miller says:

    1) I’ve usually found that the clarity and elegance of a program have a lot more to do with the programmer than the programming language. People who develop clean solutions will do so regardless of the language of implementation. Likewise, those who can’t program will find a way to force an ugly solution out of any language.

    2) Most systems administrators aren’t programmers and have rarely had any formal training in software development.

    Put these two observations together and you will still get ugly, “write only” programs Before perl it was shell script, yesterday it was perl, today it’s Python. Tomorrow someone will be asking for a replacement for Python because it’s so hard to read and can’t be maintained. Get used to it (but don’t blame the programming language).

    I started my perl programming with perl 2.0 in 1993. It’s still my “go to” programming language since it doesn’t get in my way and I can get to a solution much faster than with C or shell script.

    • Gunjit Khera says:

      You pointed out, that those who are programmers would find out clean and understandable solutions out of any language, while non-programmers would stay on getting ugly solutions out of any language. Its really on the experience of person and his familiarity with any language.
      Thanks for sharing your views with us. Stay Connected :-)

Leave a Reply to Kefle Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.