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
|