3 ms·
It's worth getting a few insights into what it does well. As with any language it _can_ do anything, but a few key features that made it stand out for me: * Pe
by Zhyl 8y ago
It's worth getting a few insights into what it does well. As with any language it _can_ do anything, but a few key features that made it stand out for me:
* Perl is set up for really terse one-liners. You can basically emulate or surpass most Unix tools with only a cursory knowledge of the syntax
* Perl syntax is highly geared towards text processing and regular expressions. File handling and regexes are so much quicker and easier to use than Python.
If I were in a situation where I had a bunch of files I needed to process and the task didn't easily fall into something that could be done with a bash command, I'd probably reach for perl over python for a quick and dirty disposable script.
- catacombs 8y ago> * Perl is set up for really terse one-liners. You can basically emulate or surpass most Unix tools with only a cursory knowledge of the syntax This definitely interests me. How does perl surpass Unix tools? I guess perl has the benefit of handling the equivalent of sed and awk.
- Zhyl 8y agoYeah, it has equivalents for each. Sed: perl -pe 's/foo/bar/' file1 Grep: perl -pe '/foo/' file1 uniq: perl -ne 'print unless $seen{$_}++' file1 But then you can combine conditions: perl -ne 's/foo/bar/ if /baz/ && /yot/; print "Line number $. changed to $_"' file1 And do some awk-ish line splitting: perl -F, -ane '$sum += $F[2]; END{ print "The sum of column 3 is $sum" }' file1 It absolutely flies in the face of the unix philosophy and is much more complicated than picking up each tool individually, but once you get to grips with 'em they're very handy.
- a_bonobo 8y agoThis blew my mind recently, when I had to delete millions of files in a directory and rm didn't make the cut (too many arguments), and find -delete took forever: https://unix.stackexchange.com/a/79656 https://unix.stackexchange.com/a/79656 perl -e 'for(<*>){((stat)[9]<(unlink))}' seems to be the fastest possible way to delete enormous amounts of files
- mkl 8y agoDid you try xargs, to do groups of files at once? That's what I usually do: find -type f -print0 | xargs -0 rm