With function signatures and state variables added in 5.010, I consider Perl feature-complete and have not really missed anything from it for as long as I've been writing Perl.<p>What I do appreciate that's missing from many other languages and systems is the extreme committment to backwards compatibility. The knowledge that the next minor release won't break existing scripts is underrated, IMO.<p>Solo project with ~23K LOC of Perl and counting here. Bless you, Larry Wall and Perl maintainers. Keep it up!
When I was about 20, I went to the local Barnes and Noble to find a book about programming.<p>Picked up the O'Reilly Javascript book from around 2000. Had no idea what javascript was, just wanted to learn how to program and trying to pick the most popular language.<p>$40 later, I got home and started reading! Very confusing, the first half of the book covered the language runtime (I think?) and the second half covered the browser sandbox, and it took me 200 pages to realize that I can't easily read or write to files on my machine with this language. Not what I was hoping for!<p>Back to Barnes and Noble, another $40 and I came home with the O'Reilly camel book, Beginning Perl I think? Cover to cover read, probably the last time I did that with a programming manual.<p>Decades have passed, I'm in the same camp as those that prefer Ruby now, but man what a breath of fresh air Perl was back in 2000.
I don’t really miss perl. I do miss the period when perlmonks was relevant to me. I haven’t really seen a similar community since. Maybe rose tinted spectacles on my part but i learned some really enlightening algorithms on there specifically in text processing and i recall it being a really warm community.<p>Randall Schwarz used to run a podcast that was a total goldmine. Fond memories of listening to that on the train on the way to work.
It's not objective, but I find I have more fun in Perl than any other language. The initial jump was steep, but it helped that I already knew some shell. Now I think in references, I can guess what $_ is going to be, I slap in a big, my $val = s/<RE_HERE>/other_thing wherever I want, I could go on!<p>I think $_ belongs to a different era, before levelling everything to the lowest common denominator became seen as a good thing. I found the limitations of its rivals less than compelling, and besides JavaScript is arguably <i>more</i> complex than Perl these days.
I've used Perl off and on throughout my career, even working at one job that was pretty much exclusively Perl. I've also used Java and C/C++. I've done a lot of work with embedded systems where C was the order of the day.<p>But back to Perl. I always thought one of the best things about Perl was CPAN. I could nearly always find a module that would accomplish a specific task I needed and then I was just left to write the glue to implement that function (or functions) for my particular needs. I'm surprised CPAN is not mentioned. I wonder if it is still active. I also wonder about security of CPAN in todays environment. I find stuff like pypi and npm to be pretty scary.<p>I haven't started anything in Perl in quite some time. All the cool kids are using Python so I've been sharpening my skills with that. (But it's all hobby projects these days.)
I still use Perl whenever I need to get something complex done quickly. Whether it's the handy command-line switches and features for easier one-liners, or just easier stream text processing, or easier external command execution, or the huge library of modules that often support things Python doesn't, Perl is my "fuck it, I just need to get this done" language.<p>I can't wait for the day that programming languages as a concept are obsolete. It feels exactly like hand-tool woodworking. I would love to stop building tables and chairs over and over, instead just buy them from Code IKEA.
When I was an intern, my boss insisted that I learn Perl. I had not yet been introduced to the ways of the monks but I learned quickly.<p>Perl is still my go-to language when I need to write something quickly.<p>I have so many purpose driven utilities that I have written in Perl, that it saves me several man-hours of work every month.
"Bare bones" seems to be a good thing for Perl. I use Strawberry Perl on Windows and it is orders of magnitude faster than Powershell for processing large files of text strings using regular expressions.<p>I hope the addition of a "new object-oriented programming framework" won't take away the "bare-bones" speed of the current release.
Perl enabled me to take a business-owner's disorganised national spreadsheet of teachers, locations and contact details and turn it into a web application, freeing him from fielding phone calls all day and boosting conversions over a period of 15 years. Perl's superb regex handling was essential in extracting and gradually refining the data until it was fit to be entered into a database. From that point on Perl, along with PostgreSQL, literally ran the business while generating opportunities for hosting promotions with bigger companies. Those who (m|kn)ock Perl usually haven't spent a significant amount of time using it to add real value to a business.
Maybe I’m missing the point of this piece, but it’s probably because I’m still reeling from the author’s idea that adding “say()” which is “print()” with a newline added, is somehow an improvement to the language.
Even on modern hardware with vectorization, the speed of perl is hard to match for stream processing.<p>I write and deploy brand new perl code in 2022 to replace some clunky python and javascript - for real! AMA!
Uh,those features are here for almost decade now, some longer IIRC.<p>But man, just being able to write<p><pre><code> use v5.10
</code></pre>
have been a blessing when you need to support some legacy infrastructure. Old Python broke after upgrades, Ruby broke, but Perl code keeps on trucking.<p>In vast majority of cases the code changes were just "well, the new version of lib gives some warnings about deprecation, might as well clean it up a bit". The minority of cases has been Mojolicious breaking stuff again.
Please don't blame bare word file handles on "C heritage"<p>--<p>Some of the improvements were needed because in places Perl’s Unix/C heritage shows through a little more than we’d like it to in the 21st century. One good example of this is bareword filehandles. You’re probably used Perl code to open a file looking like this:<p>open FH, 'filename.dat' or die;
The thing that kills Perl for me is its weak typing. Automatic variable coercions lead to data-dependent bugs. JavaScript has the same problem.<p>For scripting anything longer than a command line, I'll take Python.
Thumb up for function signatures!<p>I slowly switched from Perl to Ruby for writing my own text processing scripts. A loop with <> is very convenient but I was using Ruby for work (still do among other languages) and Perl for nothing. I was forgetting how to do stuff in Perl.
So, this is on the stack overflow blog. And Joel Spolsky famously thinks that to rewrite a codebase from scratch is the "single worst strategic mistake that any software company can make" [1].<p>I wonder if this is how you end up being a Perl user in 2022.<p>[1] <a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/" rel="nofollow">https://www.joelonsoftware.com/2000/04/06/things-you-should-...</a>
I'd argue perl's major value is from stability in the sense that what the perl developers write today can be run on the perl available on any machine, new or old. If a lot of perl developers end up use'ing lots of these new features that feeling of compatiblity will go away.
Probably not the place to ask, but some of you might find this interesting enough to take pity on me.<p>I had an idea years back to build crosswords on the surface of a truncated icosahedron (<a href="https://i.imgur.com/qlLl434.jpg" rel="nofollow">https://i.imgur.com/qlLl434.jpg</a>) but I had no idea how to find sets of 5-letter words that would mesh like that. A very clever programmer friend of mine whipped something up in Perl over a weekend using hashes. Basically it pre-emptively runs through the dictionary and hashes all wildcard forms of a word back to the original word (l...s->leaks, etc), then at each stage of filling out the puzzle it just grabs the list of words that hash to the current pattern. Say you're looking for something that fits s..p. it would return [stops, swept, soupy] etc, then tries each recursively. If the list is empty, there is no solution at that level so it backs up and tries the next word at the previous level.<p>I learned enough Perl to be able to make the code able to accept different polyhedra. The program takes quite a while to run on larger models, like say the rhombicosidodecahedron, so I've been looking for ways to speed it up. My background is with assembly and embedded C so I'm sure my implementation of these hash lookups would be slower than Perl's. Are there any other, maybe compiled, languages that have fast hash lookups like this?
I used a lot of Perl at various jobs.<p>Nowadays I have my own startup and my code is a mixture of JavaScript, TypeScript, and Rust.<p>Rust is good for anything sufficiently complex that you want to run quickly, have a small footprint, and want to be sure it works, while allowing for easy refactoring due to the strong type safety.<p>JavaScript is good for anything you want to write quickly and the code quality doesn't matter as much (e.g. test scripts). It's also much easier to write than Perl syntax-wise and has great async support (unlike Perl). Also it has a much larger ecosystem of libraries and easy to use in IDEs like VSCode. Obviously JS/TS can also be used in both the frontend and backend which is another big advantage.<p>TypeScript is sort of in between - if the JS codebase gets too large it should be written in TS instead. This makes the code less "write-only".<p>Perl and PHP were pretty good solutions as scripting languages until JS added good async/await support, map/filter/reduce, and destructuring syntax in my opinion. JS probably requires the least lines of code to get a program working.
I spent the last 16 years of my career using Perl for about half of what I wrote.<p>And I read the article.<p>The title makes no sense. The article show anything meaningful as to why Perl has improved and is "not your Grandfather's Perl". Most of what the article talks about has been around for over a decade. If anything, it shows that Perl really still has under it the same old decrepit beast it always been hiding away.
Looking forward to v7 and intro docs that only use "even more" Modern Perl.
For a bigger push, we should all volunteer on those "Do X in Y" language sites and add Perl examples. Same with Amazon Lambda and other opportunities where pick your language is available.<p>Also a modern OO seems nice, though not sure what is in it.
Would also like to see a default async library (maybe POE, but I never used it and find the name a bit strange for a default...but then I like Tokio...) Not my area at all, but an opinionated way of async seems nice.
I'm surprised with the emphasis on new features that such old features were highlighted. The 'say' function was added in 2007. Signatures were added in 2014, though to be fair they didn't stop emitting an "experimental" warning until this latest release.
I skimmed the article looking for a mention of a REPL or a new debugger. Perl is a great language but it lacks these tools. Sometimes I just want to try a couple of lines of Perl code in a REPL, but I cannot. Instead, I need to create a file. Also, when debugging with `perl -d`, I cannot use the Up arrow key to get the previous command. Not a big deal but the coding experience will be significantly improved with those tools.
Spent about 4 weeks learning perl at an internship 10 years ago. I believe that is one of the biggest professional mistakes I ever made. There is literally nothing I would recommend doing with perl over python.
I think of Perl as a Python-PHP hybrid. A pragmatic product of its time that will endure, and while I'm grateful for never needing it, I'm glad that it's a solid option still for those who do.
This is the readability of the Perl in the blog, captured on my system: <a href="https://imgur.com/a/EJFNO2U" rel="nofollow">https://imgur.com/a/EJFNO2U</a>
Sorry, but what? The top features they highlight here are a print statement that adds a new line, a change to the bonkers default of creating some kind of implicit global named variable every time you open a file, representing time as an object (with a strftime function!) and… function signatures?<p>I wouldn’t call this as “Perl moving forward”, I’d call this “Perl is still about 20 years behind everyone else”.<p>Wait until they find out that other languages print statements let you customise the line ending!
The current state of Perl 5 for Python fans:<p>Perl 5: I'm not dead!<p>TIOBE: 'Ere! 'E says 'e's not dead!<p>Internet: Yes he is.<p>Perl 5: I'm not!<p>TIOBE: 'E isn't?<p>Internet: Well... he will be soon-- he's very ill...<p>Perl 5: I'm getting better!<p>Internet: No you're not, you'll be stone dead in a moment.<p>TIOBE: I can't take 'im off like that! It's against regulations!<p>Perl 5: I don't want to go off the chart....<p>Internet: Oh, don't be such a baby.<p>TIOBE: I can't take 'im off....<p>Perl 5: I feel fine!<p>Internet: Well, do us a favor...<p>TIOBE: I can't!<p>Internet: Can you hang around a couple of minutes? He won't be long...<p>TIOBE: No, gotta get to Reddit, they lost nine today.<p>Internet: Well, when's your next round?<p>TIOBE: Next year.<p>Perl 5: I think I'll go for a walk....<p>Internet: You're not fooling anyone, you know-- (to TIOBE) Look, isn't there something you can do...?<p>Perl 5: I feel happy! I feel happy!<p>=====================<p>You can write Perl in Latin: <a href="https://metacpan.org/dist/Lingua-Romana-Perligata/view/lib/Lingua/Romana/Perligata.pm" rel="nofollow">https://metacpan.org/dist/Lingua-Romana-Perligata/view/lib/L...</a><p>or Klingon: <a href="https://metacpan.org/pod/Lingua::tlhInganHol::yIghun" rel="nofollow">https://metacpan.org/pod/Lingua::tlhInganHol::yIghun</a><p>or whitespace: <a href="https://metacpan.org/pod/Acme::Bleach" rel="nofollow">https://metacpan.org/pod/Acme::Bleach</a>