Perl is seeing a real revival in interest. Why? Because Perl is a fantastic DevOps tool. With the rise of DevOps, Perl has once again solidified its long held reputation as the duct tape of the Internet.
Since February 2016 Perl is back in the top 10 of the TIOBE Index and in the most recent monthly year-on-year comparison sees a healthy gain of 1.18%.
This resurgence is easily explained when you consider it as the ideal language for DevOps.
What Is DevOps?
DevOps is what results from the combination of the software development team (“Dev”) and the operations team (“Ops”) into a more collaborative, multidisciplinary unit. “DevOps” is considered a product of the agile development movement and, much like agile development, focuses on building, iterating, and releasing products frequently, with small, quick upgrades and updates. Close cooperation is essential.
In summary, DevOps is a new functional unit within companies that structures teams so that Development (engineering) works in sync with Operations (business). Business goals become closely aligned with engineering reality. And vice versa.
Let's look at the reasons that make Perl such a good fit for DevOps.
Perl is a dynamic programming language, so there’s no compiling. It’s open source, and it comes installed on practically every system you will ever log into.
Even better, there are code samples for everything. There’s a large and growing repository, the Comprehensive Perl Archive Network (CPAN), which provides “over 20 years of Perl libraries at your fingertips.” CPAN currently has 161,051 Perl modules in 33,450 distributions, written by 12,571 authors, mirrored on 236 servers.
Good At Many Things
Perl is often thought of as a quick fix, but is ideal for many things. Text processing, web apps, interfacing with databases, low-level apps, high-level apps, GUI development, and more. Conceptually, Perl can be used for simple tasks or complex tasks, and for small projects or major projects.
Perl's templating systems and powerful regular expression engine make it really good for web apps. The embedded Perl interpreter for Apache, mod_perl, and the powerful component-based Perl Model-View-Controller (MVC) framework Catalyst makes Perl especially suited for the web.
And Perl does a lot more than web apps. It can be used for image creation and manipulation, networking, GUI development, robotics, bio-informatics, VLSI electronics and to create mail filters to minimize spam.
In fact, there isn't a lot you can't do in Perl. Perl is object oriented and supports inheritance, multiple inheritance, diamond inheritance, polymorphism and encapsulation. There's no boundary between regular Perl and object oriented Perl: it's all just Perl.
Plays Well With Others
Perl has extra modules which allow you to write or use code written in Python, PHP, Java, C, C++, Basic, Ruby, Awk, assembler, PDL, TCL, Octave, Guile, S-Lang, Befung and Lua in your Perl script. For Python, for example, you inline Python directly in your Perl script, using Inline::Python and then call a command-line script. This means that you can use Perl in conjunction with other programming languages rather than having to rewrite existing code.
Perl is Implemented Widely
The list of companies depending heavily on Perl is long and varied. Amazon, Craigslist, Ebay, Ticketmaster, Google, BBC, Yahoo, NASA, Mitre, Deutsche Bank, Bank of America, Dreamworks Animation, Booking.com, NET-A-PORTER, and many more rely on Perl to run smoothly, either for business- or mission-critical applications.
Recently, booking.com, the travel site has stated that it maintains
Perl also, ahem, reportedly powers some of the largest NSFW web sites on the Web, including Youporn and Adultfriendfinder, two of the largest Perl sites on the web.
Fast Enough For The Right Jobs
If you need speed, you need a compiled language. Large Perl programs start more slowly than similar programs in compiled languages because Perl has to compile the source every time it runs. That said, Perl runs faster than most interpreted competitors, notably Python, because in Python everything is an object, while in Perl scalar values are simple and close to the machine. Perl isn’t as fast as C, but for a scripting language it can be remarkably speedy once that startup overhead is done. And interpreted languages including Perl, have significant advantages in agile programming type environments, including:
Rapid prototyping, no write/compile/run cycle
Rapid application development (RAD) allows more iterations per hour of expensive Agile developer time
Cross-platform and pre-installed on most systems
Established As A DevOps Tool
Do a search for DevOps jobs with Perl included and the list is long. Here’s a search from indeed.com that shows DevOps Perl job openings at Amazon, Bank of America, Atlassian, and many more.
Perl has real staying power. As we’ve outlined here, it is easily available with an incredibly wide range of libraries to pick from (CPAN repository), it’s good for different types of tasks without limiting the developer, it can (relatively) easily include other languages, it’s used by many well-known companies around the world, it’s fast enough, and your DevOps team already knows it. No extra training required. All of this makes Perl critical to DevOps. Perl is back, thanks to its strength as a DevOps tool that just plain works.
Tom Radcliffe is director of engineering at ActiveState and has over 20 years experience in software development and management in both academia and industry. ActiveState provides software application development and management solutions including ActivePerl, ActivePython and ActiveTcl dynamic language distributions and popular developer tools Komodo Edit and Komodo IDE.
We tend to think of robots as something like the Terminator or Marvin, or at least the popular press does. What is not completely understood is that simpler robots are likely to have as big an effect [ ... ]
Scroll anchoring sounds painful, or even worse something that happens at sea. Thankfully it isn't and it is a really good idea. It is such a good idea, and so simple, that you can't really understand [ ... ]