http://www.perlmonks.org?node_id=1017228


in reply to Re: Golf: reverse sort /etc/passwd by UID
in thread Golf: reverse sort /etc/passwd by UID

UPDATE- as thundergnat correctly points out, the code doesn't work as first intended, at least not without some modification.

Technically it's *possible* that usernames can be completely numeric, but that's outright abusive--borderline illegal, and definitely prone to all kinds of problems.

If I we were dealing with "abusive" uid's, it wouldn't be too hard to add a neg look-behind assertion.

Now, for the meat and potatoes... I did run into some small typos in your code, but after correcting them, it worked. *slow and dramatic golf clap*. I had a hunch it could be done with regexes!! I've said it before, and I'll say it again... you have a dark gift my friend (sarcasm).

[user@host]$ perl -e 'print reverse sort{/(:\d+:))/<=>/(:\d+:/)}<>' /e +tc/passwd Unmatched ) in regex; marked by <-- HERE in m/(:\d+:)) <-- HERE / at - +e line 1. [user@host]$ perl -e 'print reverse sort{/(:\d+:)/<=>/(:\d+:/)}<>' /et +c/passwd Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE :\d+:/ at -e +line 1. [user@host]$ perl -e 'print reverse sort{/(:\d+:)/<=>/(:\d+:)/}<>' /et +c/passwd

...and AWESOMENESS HAPPENS ALMOST HAPPENED!

Read through the rest of the thread for the reason why this awesome snippet didn't quite work as intended...

Tommy
A mistake can be valuable or costly, depending on how faithfully you pursue correction