I just discovered this, and do not know if it's commonly used in golf
(it's been a long time since I last played): if you only need a single
hash in your script, you can use the symbol table itself.
Compare the classic "remove duplicate lines" one-liner
perl -ne'$s{$_}++||print' file
with
perl -ne'$$_++||print' file
Three characters in one shot!
--
Philippe "BooK" Bruhat
The learned man makes a mistake but once... but the truly stupid keep
practicing until they get it right.
(Moral from Groo The Wanderer #75 (Epic))
> perl -ne'$s{$_}++||print' file
>
> with
>
> perl -ne'$$_++||print' file
>
> Three characters in one shot!
I think MTV used this in the palindrome golf, at least. So it's been
around for a while :)
Jasper
I was pretty sure this wasn't original, but I liked the feeling when I
thought "by the way, the symbol table is just a hash!".
With the help of :: (or rather '), one can even build up nested data
structures, I think...
--
Philippe "BooK" Bruhat
Your reputation is what you make of it... and what you choose to take with
you. (Moral from Groo The Wanderer #48 (Epic))
Whoo, nice :-) I'll add it to my notes, thanks :-)
> Three characters in one shot!
>
> --
> Philippe "BooK" Bruhat
>
> The learned man makes a mistake but once... but the truly stupid keep
> practicing until they get it right.
> (Moral from Groo The Wanderer #75 (Epic))
> _______________________________________________
> Cog-book mailing list
> Cog-...@perl-hackers.net
> http://perl-hackers.net/mailman/listinfo/cog-book
--
Jose Alves de Castro <c...@cpan.org>
http://jose-castro.org/
> Compare the classic "remove duplicate lines" one-liner
>
> perl -ne'$s{$_}++||print' file
>
> with
>
> perl -ne'$$_++||print' file
>
> Three characters in one shot!
It has its limitations though. Like namespaces:
~$ perl -e 'print"a\n::a\nmain::a\n::main::a\n"; ' | perl -ne'$$_++||print'
a
~$
... and missing newlines:
~$ perl -e 'print"a\n1"; ' | perl -ne'$$_++||print'
a
Modification of a read-only value attempted at -e line 1, <> line 2.
~$
Eirik
--
For every complex problem, there is a solution that is simple, neat, and wrong.
-- H. L. Mencken
A good plan today is better than a perfect plan tomorrow.
-- Patton