2009/4/26 Phil Carmody <thefatp...@yahoo.co.uk>:
>
> --- On Sun, 4/26/09, robert wilson <hot...@safe-mail.net> wrote:
>> Phil Carmody wrote:
>> > We need dollar-free golf!
>> >
>> > In order to answer the question "what ratio of words
>> in the SOWPODS wordlist share no letters in common with the
>> word mackerel?", I quickly threw this together:
>> >
>> > perl -ne '$c[m/[mackrel]/]++;}print($c[1]/$.,$/);{' < sowpods
>> >
>> > However, there were complaints that it had too many dollar signs.
>> >
>> > What's the shortest equivalent script which uses no dollar signs at all?
>> >
>
>> perl -le 'print+(grep{/[mackrel]/}...@w=<>)/@w' < sowpods
>
> Wow!!!
>
> It's obvious in retrospect. It's clear my original was horrifically wasteful, 
> and can at least be shortened to this at the cost of one dollar:
> perl -le 'print+(grep{/[mackrel]/}<>)/$.' < sowpods

Shorter, with still one dollar. (actually, only shorter because you
have grep{} instead of grep with a comma, so the same)

perl -alp0e '$_=(grep/[mackrel]/,@F)/@F' < sowpods

Without the dollar, it's a bit longer, of course.

perl -aln0e 'print+(grep/[mackrel]/,@F)/@F' < sowpods

But that is the best I can do..
-- 
Jasper

(I'll send the tested one to the list, Phil)

Reply via email to