Hacker News new | past | comments | ask | show | jobs | submit login
Perl One-Liners (nostarch.com)
85 points by pkrumins on Dec 4, 2013 | hide | past | favorite | 45 comments



Not sure, how many of you are aware. But this exists from the era of the bygones and the site is still active. Go take a look at http://www.perlmonks.org/ The whole site is a treasure, an extremely precious treasure of programming wealth. I've learned more from Perl Monks than from any book out there.

Some day that database will super valuable. It still is. Sometimes I get this idea that once could crawl that site, extract all the useful information and convert it into a neat book.

All the best, and Happy writing Perl one-liners, its an art of converting days worth work into a few seconds. I haven't read this book, but it definitely must be awesome. As with anything with Perl, it always is.

Before all this big data fad caught on, I used to write Perl one liners to solve most problems in 10% the time and probably 1% of the resources, for nearly most cases of what people call big data today.


As I found many times, Perl is awesome until you encounter someone else's Perl.

I inherited a Perl CGI and MySQL monster back in 2002 from a Perl monk who unfortunately died. It was a horrific Cthulu-inspired sprawling demon from hell. Little did I know, this is the norm until my third wave of inherited Perl a few years later.

Larger things now push me to Python and I get enough mileage on the smaller things out of the shell and sed/grep/awk. If I want fast stuff, it's a speedup module for Python in C.

I think back fondly of it but I know at the same time it hurt me.


> "As I found many times, Perl is awesome until you encounter someone else's Perl."

I was once that "someone else" - I once left a many-thousand line script behind me which consisted of hundreds of undocumented (and very similar in many cases) regexes and not one instance of the word 'sub'. "It just sort of grew like that", "I was young, a novice!" I tell myself, but still jerk awake in a cold sweat from time to time after fevered dreams of 30 levels of conditional nesting.

My last gig where I took over for "someone else", a fairly new system which still managed to have "legacy issues", I understood the gravity of my crime. I tried to atone by crafting concise, readable nuggets for my successor but I am still haunted.

I met the chap who took over from me recently. Regarding my "someone else" he asked: "How did you maintain your sanity?" "I didn't". He also complimented the parts I left behind, but I still have those restless nights.

"Someone else"'s worst crimes were committed using Ruby on Rails, but the Perl system was constrained by an existing, strongly defined framework. With absolute freedom, there's no telling what damage "someone else" may have wrought.


Oddly, the most horrific Cthulu-inspired sprawling demon from hell I've ever inherited was actually written in python.

I guess a sufficient level of disinterest in maintainability can defeat any language designer's hopes for the future.


perlmonks is definitely the thing which most impressed me about perl. Very helpful, kind, patient and incredibly knowledgeable people there. I don't really have anything useful to say, I just want to thank anyone that's been a part of that community - they've certainly helped me out immensely.


Hey guys,

I'm happy to give free review copies to first 10 people who'd really like to read the book! (Print books+ebooks within the US, ebooks anywhere else.) Just respond to this comment and I'll send you a free review copy!

Alternatively use coupon code HNPERL for 40% off (till Dec 16).

UPDATE: All 10 copies have been claimed. Thanks everyone who participated in the giveaway!


Would love to review your book. Where are you looking for reviews to be submitted? I'm outside the US, so it would only need to be an ebook.

Just about to talk the dog out for a walk, but will check in as soon as I return. Thanks for the opportunity.


Awesome, you got a review copy. You can submit the review on your blog, or just tweet about it, or if you don't feel like saying anything about it, then it's fine too. Email me peter@catonmat.net and I'll arrange you a copy!


I used to be a Perl Guru, but am well out of practice. I still use it in my regular job as a pragmatic way to do some data munging without having to start up a REPL.

I'd love to have a copy of the book.


Great! Email me peter@catonmat.net and I'll send you a copy. Once you read through it, you'll be much faster with that data mungling!


Yeah, I would love to see the book. Perl is a language I've always wanted to explore further. You can contact me at the email in my profile.


Perl is awesome. And I teach it really fun way in this book. I'll contact you. :)


Would love to give this a review, if possible. More of a Ruby guy, but I really appreciate the elegance of a good one-liner.


Yup, you got the copy. You're the 9th person. Email me peter@catonmat.net with your details.

Talking about Ruby, take a look at this:

http://benoithamelin.tumblr.com/ruby1line

My friend Benoit Hamelin translated all Perl one-liners to Ruby a while ago!


Thanks for the tip on the Ruby post. Will shoot you an email.


Would love to get a copy!


Cool! Email me peter@catonmat.net and you got it.


Yeah, I'd like to take a look, as well.


Great! Email me peter@catonmat.net your address and I'll send you a copy!


I would also like to read it very much :)


You got a copy! Email me peter@catonmat.net. :)


I would love to take a look at the book!


Cool, email me peter@catonmat.net with your shipping address and I'll get you a copy!


I would thoroughly enjoy a review copy!


You're 10th. You got the last copy! Send me your mailing details to peter@catonmat.net. :)


I'd love to read the book!


Excellent! Email me at peter@catonmat.net and I'll send you a free copy!


I got to see a pre-release. I didn't write a review, as such, because I already knew everything that was in there and I can't really say if it teaches well as a result. But:

I read most of this book, and didn't want to yell at the authors because they were doing Perl wrong.

Given how much of a perfectionist bastard I am ... this is likely high praise.


10 years on #perl teaches you some good Perl. Thanks for the praise, Matt. I appreciate it.


So you didn't want to yell, because there was nothing bad enough to yell at

or because you were being ... inexplicably... kind?


There's no need to accuse me of that :)


hahahaha mst you bastard :p


"Your mama writes Perl code so bad she made Larry Wall switch to Python!"

Wrong type of Perl one-liner?


Haha, that's the best type of Perl one-liner! Just let's make it proper:

    perl -E 'say "Your mama writes Perl code so bad she made Larry Wall switch to Python!"'


Congratulations! I like to watch your blog[1] for interesting tidbits. I always pick up something I didn't know how to do.

[1] http://www.catonmat.net/


Thank you!


After having seen the entry on HN, it took about 5 minutes and the print version of the book was ordered :). I've been using Perl on and off for more than 10 years, mostly for sysadmin and data munging stuff, and I'm always on the lookout for good short scripts. I'm looking forward to browse through the book (I still prefer print versions). I've bookmarked your blog as well.


Congratulations on getting published by No Starch! Your website is very useful, especially the sed one-liners.


Thank you!


If you're writing a lot of one-liners that use multiple modules then you may want to consider something like App::MyPerl - https://metacpan.org/pod/App::MyPerl


Anyone else seeing weird font substitution in Adobe's reader with the PDF of this book?

perl -ne 'print "$. $_" if $a{$_}++' looks like it has 1s instead of ls - happens whenever the monospaced font is used.


Just send me one too :)


"Part of the fun of programming in Perl lies in tackling tedious tasks with short, efficient, and reusable code."

Reusable - I have always felt that Perl is a write-only language. :)


Bad perl is write only.

Good perl is a different matter.

With great expressiveness comes great ability to express how bad you are at writing maintainable code.


Unless you make it many small shell aliases, such as these:

    urlescape () { perl -MURI::Escape -lne 'print uri_escape($_)' <<< "$1"; }
    urlunescape () { perl -MURI::Escape -lne 'print uri_unescape($_)' <<< "$1"; }
Then you can reuse them often. :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: