[HN Gopher] Not Your Grandfather's Perl ___________________________________________________________________ Not Your Grandfather's Perl Author : djhaskin987 Score : 187 points Date : 2022-09-08 15:40 UTC (7 hours ago) (HTM) web link (stackoverflow.blog) (TXT) w3m dump (stackoverflow.blog) | ksherlock wrote: | Please don't blame bare word file handles on "C heritage" | | -- | | 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: | | open FH, 'filename.dat' or die; | tyingq wrote: | Maybe the thinking was that Perl's STDIN, STDOUT, STDERR, came | from c's (well, stdio.h's) stdin, stdout, stderr? | | Which then inspired the bad idea of expanding on that? | ksherlock wrote: | It's more from sed/awk/shell I suppose. | | eg, open FH, "<filename" | | vs FILE *fh = fopen("filename","r") | tyingq wrote: | For the <,> and variations, sure. Though IO::File has been | there a long time and looks a lot more like your C example. | IO::Handle also. | | Supports, for example: | | $fh = IO::File->new("filename", "r"); | | Or, as with C, things like O_WRONLY|O_APPEND in place of | "r". | johnmc408 wrote: | 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. | | 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. | thesuperbigfrog wrote: | The current state of Perl 5 for Python fans: | | Perl 5: I'm not dead! | | TIOBE: 'Ere! 'E says 'e's not dead! | | Internet: Yes he is. | | Perl 5: I'm not! | | TIOBE: 'E isn't? | | Internet: Well... he will be soon-- he's very ill... | | Perl 5: I'm getting better! | | Internet: No you're not, you'll be stone dead in a moment. | | TIOBE: I can't take 'im off like that! It's against regulations! | | Perl 5: I don't want to go off the chart.... | | Internet: Oh, don't be such a baby. | | TIOBE: I can't take 'im off.... | | Perl 5: I feel fine! | | Internet: Well, do us a favor... | | TIOBE: I can't! | | Internet: Can you hang around a couple of minutes? He won't be | long... | | TIOBE: No, gotta get to Reddit, they lost nine today. | | Internet: Well, when's your next round? | | TIOBE: Next year. | | Perl 5: I think I'll go for a walk.... | | Internet: You're not fooling anyone, you know-- (to TIOBE) Look, | isn't there something you can do...? | | Perl 5: I feel happy! I feel happy! | | ===================== | | You can write Perl in Latin: https://metacpan.org/dist/Lingua- | Romana-Perligata/view/lib/L... | | or Klingon: https://metacpan.org/pod/Lingua::tlhInganHol::yIghun | | or whitespace: https://metacpan.org/pod/Acme::Bleach | [deleted] | IncRnd wrote: | You can even write perl to dump urls submitted by hn users, as | this person I found does. [1] | | [1] https://gist.github.com/adulau/939629 | [deleted] | [deleted] | calvinmorrison wrote: | I wish there was a callout to Modern::Perl; use | Modern::Perl; | | and you get the lot of those features. | orf wrote: | 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? | | I wouldn't call this as "Perl moving forward", I'd call this | "Perl is still about 20 years behind everyone else". | | Wait until they find out that other languages print statements | let you customise the line ending! | [deleted] | wwweston wrote: | The `print` statement in perl has always behaved more or less | as it does in the "other languages" you describe. | | `say` removes the need for anyone to write their own "I'm tired | of the manual newline ritual" function and provides a standard | for where the newline is added. That's a marginal convenience, | but given the frequency with which people either do write their | own or newline inconsistency gets encountered (or both), it's a | reasonable one. | | And it's in pieces like this one not because it's a huge thing | to crow about, but to illustrate the opt-in nature of | incremental changes or sets of changes to perl. | | `say` is also about 15 years old, like Time::Piece. The author | is not announcing features that are new to the whole world, | just new to a certain audience, possibly including the author. | | This is also true of the filehandle scoping feature (which is | 22 years old). If you find the old bare filehandle scope | behavior only notable enough to hurl a drive-by "bonkers" at it | then I suppose that's one way of advertising that you haven't | spent much time thinking about unix shell utilities and | associated features/issues. | | Function signatures are slightly younger than typescript, or at | least, the most familiar syntax for them; both the old and more | recent means are essentially naming a list of arguments. | | In general: perl is an opportunity to think about programming | languages differently. There's a lot of contexts in which I | never use it anymore, but it's rare to find people with | substantial insights who casually disparage it. | shp0ngle wrote: | It's a weird feature set to highlight; most of this is | available for a long time. | | I didn't know about the function signatures. It's nice, I | guess. | | But I don't want to write perl again anyway. | tyingq wrote: | >"Perl is still about 20 years behind everyone else" | | The version of Perl on your favorite Linux distro might be. I | think that's the point the article was trying to make...that | distros ship VERY old versions of Perl. | eduction wrote: | Ya those were my thoughts exactly, and I used Perl heavily for | several years. | | The number two feature they listed was released more than 22 | years ago. | | Perl is fine for certain tasks, I have no problem with people | who choose to use it, but at a certain point I'd argue it's | better to learn a new language than try to use Perl for a new | type of task. | ibiza wrote: | The thing that kills Perl for me is its weak typing. Automatic | variable coercions lead to data-dependent bugs. JavaScript has | the same problem. | | For scripting anything longer than a command line, I'll take | Python. | pkrumins wrote: | I love Perl! | samiam_iam wrote: | LordKano wrote: | 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. | | Perl is still my go-to language when I need to write something | quickly. | | I have so many purpose driven utilities that I have written in | Perl, that it saves me several man-hours of work every month. | cheaprentalyeti wrote: | Damn Pythonistas! Get off my lawn! | cheaprentalyeti wrote: | (Shakes cane at clouds) | HeckFeck wrote: | the camel shall crush the serpent | 1024core wrote: | I am forced to use Python, and I hate it. | auraham wrote: | 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. | 0xbadcafebee wrote: | 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. | | 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. | csdvrx wrote: | Even on modern hardware with vectorization, the speed of perl is | hard to match for stream processing. | | I write and deploy brand new perl code in 2022 to replace some | clunky python and javascript - for real! AMA! | qsort wrote: | What's the difference when compared with other scripting | languages? Is it just all-around faster or it's about some | particular application? | csdvrx wrote: | > What's the difference when compared with other scripting | languages? | | Compared to every other scripted languages I've tried, it's | always faster - so much that it often rivals compiled code | (even with extra optimizations as explained before) | | > Is it just all-around faster | | Yes - also faster to deploy, and harder to break in | deployment due to dependencies rarely evolving. No need to | pip install whatever. | | Consequently, tracking modules' versions (say in python) and | their break in compatibility is a thing of the past. Some may | say it's because it's dead. I guess I'm a necrophiliac then, | because it makes my life so much easier that I'm loving it :) | avyjit wrote: | When you refer to modern hardware with vectorization, are you | saying perl beats software that makes use of vector | instructions? If so wow! Afaik perl is a plain old interpreted | language with no JIT, what makes it so fast? I had an idea of | perl as in the same performance category as Python, Ruby and | friends. | cogman10 wrote: | My assumption (and I could be wrong) is that whenever you do | something that's ultimately CPU intense, perl dives into C | code. The sort of stuff you do with perl tends to be a lot of | string manipulation and it turns out perl is pretty hyper | optimized for that sort of workload. | | Other languages could do the same, but often they have a few | more layers before they start running that C code. | | I'd be curious to know if the perl grammar also somehow lends | itself to being fairly optimizable for it's interpreter. | csdvrx wrote: | > Afaik perl is a plain old interpreted language with no JIT, | what makes it so fast? | | IDK. I didn't waste time checking why. | | My guess is that due to the much smaller code size, it | reaches a sweetpoint where it fits nicely in the L1 or L2 | cache. | | But it's just a hunch, I couldn't prove it. | kstrauser wrote: | Perl likely spends a lot more time in C than a lot of other | bytecode-compiled languages like Python. | while(<STDIN>) { print $_; } | | isn't doing much of its work at the top level. | clscott wrote: | 1. What's your top technique for keeping it fast? | | 2. Are you hiring? | csdvrx wrote: | > 1. What's your top technique for keeping it fast? | | Using the stock install as much as possible. | | Since a perl interpreter is available about everywhere, this | makes the scripts cross platform very easily too. | | > 2. Are you hiring? | | Maybe? You have no email in your profile. Can you please send | your CV to my nickname at outlook dot com? | wistlo wrote: | I'm working in Windows (employer's choice) and need to process | some huge data files on the desktop. | | Perl (Strawberry Perl for Windows) is much faster than native | Powershell (or CMD) scripts. A few Perl one-liners and I have 2 | GB processed in a couple of minutes. | | Big fan of Perl here. | anthk wrote: | Perl is the Unix utilities' replacement for Windows. It can | do awk/sed in one place. | | What I miss it's a "strings(1)" replacement for Perl. | csdvrx wrote: | > A few Perl one-liners and I have 2 GB processed in a couple | of minutes. | | This matches my experience: my task is IO bound, processing | tens of GB in a matter of minutes. | | > I'm working in Windows (employer's choice) | | Work prefers MacOS, Windows is my personal choice :) | | Windows 10 and 11 are a pleasure to use: between the Windows | Terminal and tools like AutoHotKey, there's no Linux | equivalent, even for a commandline geek. | | Using Windows (and Perl, and other weird things I like) may | not be fashionable, but it's hard to beat. | hpcjoe wrote: | > > A few Perl one-liners and I have 2 GB processed in a | couple of minutes. > This matches my experience: my task is | IO bound, processing tens of GB in a matter of minutes. | | Huh. Windows is usually anywhere between bad to horrible at | IO compared to alternatives. 2GB processing (usually | mixtures of regex, summarizing data, summing fields | extracted) shouldn't take more than a few seconds. Even on | a slow disk, say 100MB/s, we are talking 20s. On faster | SSDs, and NVMe, its very snappy. | | If you are waiting minutes ... | | > Windows 10 and 11 are a pleasure to use: between the | Windows Terminal and tools like AutoHotKey, there's no | Linux equivalent, even for a commandline geek. | | Huh. I'm happy that $dayjob gave me the option of getting | off my horrible Dell workstation laptop (8 core, 64 GB ram, | nvidia graphics) and onto a mac pro m1. While the keyboard | diff is annoying, karabiner elements fixes most of that. I | still ask for a linux laptop at ever opportunity though, as | this is what I'm most functional with. Easily the | best/fastest experience I've had for dev/admin, and the | most stable. Mac is a close second. | wistlo wrote: | Full disclosure: Work has been Windows centric, but I | recently moved to a new group with some Mac users. I'll | have that choice, next time I swap hardware, but probably | will stay with Windows because | | * Would miss too many amazingly useful utilities like | arsclip. | | * Easier to patch into my home network, which is NTFS- | based. | | * Employer is now wedded to Microsoft and Azure, so having | Powershell and native access to NTFS AD on my native | desktop is proving more useful. | | * I actually like the Windows interface, even with the | Control Panel and other system utilities caught in a weird | split between Windows XP and WIndows 10 UIs. | | * Some things, like certificate management and hosting a | personal database, I do in Ubuntu or Debian as a VirtualBox | guest under Windows. | | * Wife uses Windows on her laptop. She doesn't know it, but | it's actually running as a VM on Debian, very stable, and | can easily take her Windows to a new machine. | | * [I keep coming back to add items to this list] Remote | Desktop Services have improved vastly, and I can manage | remote servers or 12 year old client machines at a remote | site with equal ease. (XP/7-era machines got a second life | when I converted Windows OS disk to SSD). Also find screen | sharing via 3rd party VNC (TightVNC) useful. | | * The keystrokes have become second-nature. Try as I might, | I can never get fully comfortable on a Mac OS desktop. Now | get off my lawn. | csdvrx wrote: | > The keystrokes have become second-nature. Try as I | might, I can never get fully comfortable on a Mac OS | desktop. | | Same, that's one of the biggest reasons - but I also | agree with the rest of your list: what I like the most in | Windows is the UI! I run most of my programs fullscreen, | with shortcuts. I rarely use the mouse, and Windows plays | along, while I have to fight other systems. | | Even when run baremetal, Windows has improved so much | over the board that once you add RDP/VNC, it's a no | brainer. | SighMagi wrote: | Gives me warm fuzzies to read new Perl articles. Such a fun, | hackable and eminently practical language. | HankB99 wrote: | 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. | | 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. | | 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.) | guilherme-puida wrote: | > But back to Perl. I always thought one of the best things | about Perl was CPAN. | | I'm a younger developer, so I wasn't around when Perl was super | popular. I listened to the Corecursive episode about CPAN [0] | and was really impressed. It's a good listen even if you're not | that interested in Perl anymore. | | [0]: https://corecursive.com/tdih-cpan/ | wainstead wrote: | CPAN was definitely the envy of other languages for many years | but I feel most have caught up by now. | forgotmypw17 wrote: | 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. | | 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. | | Solo project with ~23K LOC of Perl and counting here. Bless you, | Larry Wall and Perl maintainers. Keep it up! | arthurcolle wrote: | What is your project? Raku has some cool features and | interesting syntax, I took a look at it before the rename, but | find myself reaching for Python for basically everything. | forgotmypw17 wrote: | Link is in my profile. | duskwuff wrote: | Signatures were added in 5.020, and [edited:] were considered | experimental until 5.036. | theonething wrote: | are Perl function signatures the PHP/Python equivalent of | type hints? | duskwuff wrote: | This may shock you, but: historically, Perl functions did | not have declared arguments. Like, at all. The function | just got arguments implicitly passed to it as an array | (@_), and parsing that into individual variables was up to | the function -- so most functions would start like this: | sub myFunction { my ($self, $arg1, $arg2) = @_; | ... } | | Or, in older code, you might even see this: | sub myFunction { my $self = shift; # implicitly | get the first value from @_ my $arg1 = shift; | my $arg2 = shift; ... } | | Notably, this didn't even check the number of arguments you | passed. If you passed too many or too few arguments to a | function which worked this way, the extra arguments would | silently be ignored, or missing arguments would silently | show up as undef. | | Function signatures turn this into something that'll look | much more familiar to users of other languages: | sub myFunction ($self, $arg1, $arg2) { ... | } | | which includes checks to make sure that all the expected | arguments (and no more) were passed. | darrenf wrote: | > and are still considered experimental | | No, 5.36 stabilised them. | | https://perldoc.perl.org/perldelta#Core-Enhancements | | > _The 5.36 bundle enables the signatures feature. Introduced | in Perl version 5.20.0, and modified several times since, the | subroutine signatures feature is now no longer considered | experimental. It is now considered a stable language feature | and no longer prints a warning._ | duskwuff wrote: | Ah! Looks like I need to upgrade, then -- I was reading | from "perldoc feature" in my install, which was still on | 5.34. | forgotmypw17 wrote: | Thanks for the correction. I don't use them anymore (instead | doing a few lines of sanity-check boilerplate in each sub) so | that's why I made that mistake. | yamtaddle wrote: | > 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. | | I don't write much Perl these days and haven't for some time, | but it's still what I might reach for if I were tasked with | writing something suitable for a scripting language that had to | run with ~0 operational or upgrade/maintenance budget for a | decade or more in environments I wouldn't necessarily be able | to control or influence, or else [bad thing will happen]. | latchkey wrote: | Perl needs backwards compatibility given the `write once, | read never` nature of the syntax. | | Imagine trying to upgrade this to some new syntax... | | https://github.com/schwern/AAAAAAA | usefulcat wrote: | The fact that it's possible to craft deliberately | obfuscated code in a language doesn't actually tell you | much about the language. | TimTheTinker wrote: | That looks more like write-only naming... but the syntax | itself isn't bad at all. | | Here's the main module: https://github.com/schwern/AAAAAAA/ | blob/aaaaaa/aaa/AAAAAAAAA... | gerikson wrote: | See also Acme::Bleach: | | <https://metacpan.org/pod/Acme::Bleach> | yakubin wrote: | I've had very limited contact with Perl, but for scripting | purposes it does seem like the best option, so I intend to sit | down to it and learn it better. It looks like a great next step | after sed and awk (perl -pe). I love the ability to write terse | scripts, reasonable speed for a scripting language and, as you | said, backwards-compatibility (such a stark contrast compared | to Python). | stjohnswarts wrote: | I would argue that ruby as almost all the strengths of perl | and conciseness with more coherency if you want a perl-like | fluidity and terseness. I personally like python for anything | that becomes more than a 100 lines of bash. | ilyash wrote: | For that, there is Next Generation Shell. Also works like a | charm even before 100 lines. For example when structured | data is needed. Some other advantages over bash are error | handling, automatic command line arguments parsing (similar | to Raku, btw), standard library with functions like warn(), | log(), debug(), retry(), etc that you have likely | implemented hundreds of times in your bash scripts. | | Disclosure: I'm the author. | btilly wrote: | Due to poor coding practices (eg monkeypatching) and a | weaker testing culture (by default Ruby does not run unit | tests when installing libraries) I've found Ruby to be | substantially less reliable than Perl. | | However the world has moved on to Python. So I curse every | time I again have to look up how subprocess works for what | I'd do in Perl with backticks. | kqr wrote: | Does Ruby come pre-installed on virtually every Unix-like | system out there? | jrochkind1 wrote: | No, and if it is, who knows what version it is. | | I think that's the main thing preventing one from using | ruby like this. It is otherwise preferable in pretty much | every way. | | Perl is kind of pre-installed on virtually every Unix- | like system for what are at this point historical/legacy | reasons. It is unlikely any other language can ever | achieve this at this point. | ARandomerDude wrote: | If it's not installed already, Ruby will be installed | ASAP on any machine I use. | someRandoJunk wrote: | You're confusing perl with ruby there. | [deleted] | senorsmile wrote: | The "Learning Perl" book from O'Reilly is the best book to do | this (and imho is one of the best written programming books). | HeckFeck wrote: | The Modern Perl book is great, it explains a lot of the Perl- | isms to a modern audience. | | http://modernperlbooks.com/ is where you can read it for | free. | theonething wrote: | >Bless you, Larry | | I see what you did there. | | Edit: for those downvoting me because they don't understand my | comment, it refers to the fact that bless is function of the | standard library to associate an object with a class. | | If you're downvoting me because you think it's a stupid and off | topic comment, that is perfectly valid and acceptable to me. | cryptonector wrote: | Needs static typing. | | I'll let myself out now. | forgotmypw17 wrote: | I make up for this by writing short subprocedures and many | sanity checks. | MobiusHorizons wrote: | When was the last time this caused a bug for you? My | experience of moving from JavaScript to typescript is that it | takes significantly longer to write many generic things | because the types can't really express the intended use as | well. I will certainly admit that types help a lot at the | boundaries between systems , or for catching errors | introduced when changing code, but it's not always a clear | win for types, given how much more verbose, and less | expressive the language becomes as a result. | cogman10 wrote: | While it's not my favorite language. I have to admit that | function signatures go a long way towards making perl feel | somewhat normal to work with. I have to imagine they are pretty | big boons for IDEs. | singingfish wrote: | One of my criteria for good tools is that they scale well from | the smallest possible use case to absolutely massive. Git meets | this criterion for example. | | Anyway I manage a 250kline code base written over 20 years | which is in surprisingly good shape consider it's age and how | many people have touched it. Last time we upgraded the perl for | the first time in a decade - going through the addition of many | features and major internal changes (e.g. unicode, | optimisation) the total number of lines of code we needed to | change was at most 50. And very little having to fiddle with | underlying cpan libraries. | | Back to the point. Throwaway script - perfect candidate. Code | capable of running the money pump for a billion dollar company. | Also just as fine as any other similarly capable environment, | better than some, trickier to manage the team than others. | superkuh wrote: | 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. | cestith wrote: | If you need new code you write today to run on 20 year old | systems, don't use the newer features. Perl 5.36 is backwards | compatible to code written for Perl 5.6 after all. If you need | 20 year old code to run on new machines, the same thing occurs | - you hand it to a recent Perl 5 and it works. Compare and | contrast the last 20 years of PHP or Python. | csdvrx wrote: | > If you need 20 year old code to run on new machines, the | same thing occurs - you hand it to a recent Perl 5 and it | works. | | You're only noticing half of the picture. | | If you want to write code that'll still run in 20 years, do | the same. | HeckFeck wrote: | 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! | | 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 _more_ complex | than Perl these days. | shp0ngle wrote: | ugh $_ | | I successfully hide away all my bad perl memories and now it's | coming all back | forinti wrote: | Funny thing is: $_ is a valid Java variable name. | HeckFeck wrote: | And a JavaScript library! http://underscorejs.org/ | wistlo wrote: | "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. | | I hope the addition of a "new object-oriented programming | framework" won't take away the "bare-bones" speed of the current | release. | anthk wrote: | Perl's bindings for Win32 and OLE are amazing. | csdvrx wrote: | Would you have some interesting examples? | | I love Win32 because it's the closest we have to a universal | GUI format for software. | anthk wrote: | https://metacpan.org/pod/Win32::OLE | jug wrote: | Really? This is interesting! I had completely written off | Perl for Windows due to its heritage. But we still use COM | objects in our scripts here and while I like PowerShell | conceptually, I really never got to have fun with it as a | scripting language. It just has so many quirks like "implicit | returns" etc. and is just so verbose it's bordering on hard | to read at times. | anthk wrote: | https://metacpan.org/pod/Win32::OLE | rurban wrote: | The best OO frameworks Mouse and cperl make it faster. Moose, | Moo and Corinna signicantly slower. Guess which frameworks are | recommended | justinator wrote: | Corinna is essentially the working spec of the new class | system in Perl. I'm not sure being performant was ever the | goal. | jlv2 wrote: | I spent the last 16 years of my career using Perl for about half | of what I wrote. | | And I read the article. | | 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. | [deleted] | CraigJPerry wrote: | 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. | | 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. | btilly wrote: | Most of the people who were on perlmonks are still around | somewhere. Often with the same or a similar handle. (I added my | first initial to mine.) | samiam_iam wrote: | My grandfather was too smart to use Perl. | ra88it wrote: | When I was about 20, I went to the local Barnes and Noble to find | a book about programming. | | 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. | | $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! | | 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. | | 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. | pmontra wrote: | Thumb up for function signatures! | | 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. | newaccount2021 wrote: | mikejulietbravo wrote: | Perl receives such an unnecessary amount of hate | michaelwww wrote: | I don't think it's hate. I think it's more "why would I choose | Perl over Python?" Perl has a painful syntax, Python greatly | improves on this with easy syntax. I don't want to have to | relearn the syntax every time I reach for a scripting tool. | mikejulietbravo wrote: | Sure, but there are a lot of times where if you care about | performance you should use Perl. General purpose? Sure, | Python. | autoexec wrote: | > Perl has a painful syntax, Python greatly improves on this | with easy syntax. | | Regular expressions are way better in Perl. I increasingly | find myself going back to Perl for RE heavy projects because | it's so cumbersome in Python by comparison. | | I'm still undecided on if Perl needing semicolons everywhere | is only 'as bad' or 'worse' than Python forcing you to worry | about the exact number of tabs/spaces indenting lines, but | I'm leaning toward python being easier in that respect. | | Still, when I have to get something done quickly, especially | if it's an immediate need I don't see having to worry about | later, Perl is what I turn to. Everything in Python becomes a | "Project". | lmm wrote: | Those who've had to maintain someone else's perl tend to find | that the hate is, if not strictly necessary, very much | warranted. | em-bee wrote: | apparently also some of those that have to edit their own | code they have not touched for a year. | djbusby wrote: | I see this for every language, every project - and across | domains. | | Every new Dev says the previous code is shite. Odd that the | plumber and electrician do it too. | | It's as if nobody can produce good work except for $ME at | $NOW | rrwo wrote: | Badly-written Perl code from the 1990s is not the fault of | the language. | | It's the fault of the non-programmers who read "Learn Perl in | 2 hours and become a millionaire" books, had a massive s*t on | a keyboard and started a business with it | csdvrx wrote: | > Perl receives such an unnecessary amount of hate | | I agree. We might deny it, because we are geeks, not | fashionistas, but there's such a thing as "cool for geeks" like | running Rust code on MacOS with some PostgreSQL sprinkled on, | and such a thing as "uncool" like running Perl code over | Windows and exchanging CSV files. | | Personally, IDGAF: I care about what works the best, not what's | cool. I care about performance. I care about the code not | breaking due to weird compatibility issues. I care about | keeping the stack as simple as possible, because what's simple | often works better. | | If, god forbid, I need something more complicated than CSV, I | reach for sqlite --- which, unfortunately, is starting to | become the "cool" option, and therefore might get turned into | the proverbial hammer that makes all your problems look like | nails! | mikejulietbravo wrote: | This^ | | If your system isn't performant, it's shit. Performant is | relative to what you're trying to do and how picky your users | are, but at some point you're going to be optimizing for | milliseconds without question. | [deleted] | JackFr wrote: | 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. | lloeki wrote: | The point is not about `say` itself (which has been there since | Perl 5.10, released on 2007/12/18), it's only an example of how | much Perl uses modularity (via `use`) to enable new features | while ensuring a) code dependent on a new feature alerts on | Perl versions without the feature and b) backward compatibility | of new Perl versions with old Perl code. | | Compare: # Perl use feature 'say' | | vs: # Python from __future__ import | print_function | | Which at first blush follow the same principle, except that | Python decides that `from __future__` is a vision into upcoming | doom, that is a future version of Python for which code that | preexists becomes incompatible _unless it is ported to the new | version_. | | IOW py2 code doesn't run on py3, barking at you in obscure ways | if you try, and py3 code doesn't run on py2, barking at you in | obscure ways if you try. (or worse, partially runs and either | explodes in mid flight or silently corrupts data). | | Whereas Perl code written targeting vX runs on Perl vY as long | as Y >= X, and if Y < X then Perl tells you "unsupported | feature foo" or "your perl is too old, update to at least X". | $ perl5.18 sig.pl Feature "signatures" is not supported | by Perl 5.18.4 at sig.pl line 1. BEGIN failed-- | compilation aborted at sig.pl line 1. | | (yes yes I am aware that with enough effort and trickery you | could write code that works on both py2 and py3. I did that a | long time ago; it's a pain, and doesn't solve the problem of | _preexisting_ code) | | And not just that, Perl alters its parser behaviour _live_ (and | scoped to the module!) so remove ` 'signatures'` from `use` and | you get: $ perl5.30 sig.pl Malformed | prototype for main::my_subroutine: $foo, $bar, $baz = 'fury' at | sig.pl line 7. | | But leave it in and there's no parse error. No magic | preprocessed comments or fake code trickery like JS (which has | a commitment to backwards compatibility as well) has to do[0]: | | _To invoke strict mode for an entire script, put the exact | statement ` "use strict";` (or `'use strict';`) before any | other statements._ | | (They had to make it a string in void context instead of a | comment because comments are removed by JS obfuscators, but | it's essentially a magic comment/preprocessor directive) | | [0]: https://developer.mozilla.org/en- | US/docs/Web/JavaScript/Refe... | hpcjoe wrote: | This. So much this. | | At the $dayjob, writing some python assuming late model | 3.10.x, and discovering that the API has changed when I have | to make sure it works on 3.6.x and 3.7.x. | | Nevermind important libraries like pandas changing the API so | some functions you 've used for years just disappear. | | I've got 30+ year old perl 5, that just works. And is | readable. I wish 2 year old python could just work. | xivzgrev wrote: | Perl was created in 1987. My grandpa isn't that young! | mansilladev wrote: | As if Perl already didn't have a bad reputation for readability, | that black or dark gray text in that <code> blocks.. phew. ___________________________________________________________________ (page generated 2022-09-08 23:00 UTC)