Hacker News new | ask | show | jobs
by melling 1742 days ago
i no longer use it but Perl was always the better solution when one thought AWK was the answer.

Perl will do those things where AWK really shines and if the problem got bigger, Perl was easier to deal with.

4 comments

The problem is that awk is a very simple language, which you can learn in an afternoon. Perl is a very complex language, and is not used anymore, so you're just spending your time on something you'll rarely use.
>> Perl is a very complex language, and is not used anymore, so you're just spending your time on something you'll rarely use.

Perl is no more complex than Python, Ruby, or Powershell. If you use any of those you can be productive with Perl in a few hours.

Perl is still used, it is just not as popular as it was in the past. Do you use Git? Parts of it are written in perl. Large parts of Git were originally written in Perl, but have been migrated to C over time.

The part that's equivalent to what you'd use for your regular awk isn't very different. Sure, you can do full-scale OO programs, but that doesn't have a large impact on small string munging. I get that you might not learn it to fluff up your CV.

Also, it's usually the same kind of Perl, so you don't have to worry about whether awk is the "one true" one, or mawk, or gawk...

If you work a lot with Linux, you can pretty much count on Perl and awk always being there. So it comes in quite handy to know them.
Perl is very must still used. lol
It's used in Debian system tools and in Git, so it's still in wide use.
OpenBSD's binary package system is written in perl.
Probably as much for legacy reasons as anything else. Perl was the chosen scripting language for utilities, it works, they understand it, and they've kept with it. Sort of how they stay with CVS for their source repository.

Python isn't even installed on a base OpenBSD system.

Mark Espie rewrote the entire package system in perl in 2010, which is a bit late to be classed as legacy.

https://undeadly.org/cgi?action=article;sid=20100323141307

I'm not sure what was used for the version before this, but the original BSD package system was written in C.

But perl was already the "standard" for other system/config utilities, no?
I don't know what we mean by "standard," but I found a number of perl references with the following shell fragment:

    $ for x in $(echo $PATH|sed 's/:/ /g'); do file $x/*|grep perl;done
All but two hits were in /usr/sbin, and /usr/bin. I isolated those files with:

    $ file /usr/sbin/* | awk '/perl/{sub(/:.*/,"");sub(/^.*[/]/,"");printf "%s, ", $0}';echo ''
The sbin results are:

    adduser, fw_update, pkg_add, pkg_check, pkg_create, pkg_delete, pkg_info, pkg_mklocatedb, pkg_sign, rmuser, 
There are more in /bin:

    $ file /usr/bin/* | awk '/perl/{sub(/:.*/,"");sub(/^.*[/]/,"");printf "%s, ", $0}';echo ''

    c2ph, corelist, cpan, enc2xs, encguess, h2ph, h2xs, instmodsh, libnetcfg, libtool, perl, perlbug, perldoc, perlivp, piconv, pkg-config, pl2pm, pod2html, pod2man, pod2text, pod2usage, podchecker, podselect, prove, pstruct, skeyprune, splain, streamzip, xsubpp, 
A perl script can't pledge() or unveil(), so I am guessing that anything sensitive has moved to C.
I found that to be the case many times as well. But awk also often outperforms Perl, especially mawk.
Perl was built initially as a sed/awk killer but got distracted into trying to take over the world. The interpreter for a language with 100x the number of features will always be slower. Also there's a very clear boundary for when I should use awk by itself, as part of a pipeline, or switch to a better tool. I feel like Perl has the potential to suck me imperceptibly into a huge mess where I spend 80% of my time refactoring everything.
Did you have ever found that a Perl oneliner is slow so rewriting by awk meaningful?
Yes but you can't learn perl as quickly as you can learn awk.
Though you can learn just enough perl to do awk-like things fairly easily. And then grow from there as needed.
IDK. On my OpenBSD system the awk man page is under 500 lines, and it pretty much covers the subject.

I've tried to get started in Perl a few times, and just found it weird. It doesn't click. Awk is kind of weird too but it's so simple it doesn't matter.

I'm sure I would eventually get Perl if I had to use it. But for me, awk and sed and shell scripting have covered my needs.