http://qs1969.pair.com?node_id=240284


in reply to Simplifying code (Not obfuscation)

Golf?
perl -le"chomp($_=`echo butter`);print"


MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
I run a Win32 PPM repository for perl 5.6x+5.8x. I take requests.
** The Third rule of perl club is a statement of fact: pod is sexy.

Replies are listed 'Best First'.
Re: Re: Simplifying code (Not obfuscation)
by Hofmator (Curate) on Mar 04, 2003 at 11:49 UTC
    Golf!! :) perl -le'$_=`echo butter`;chomp;print'

    -- Hofmator

      What's the point in chomping if you only going to put it back with -l?

      perl -e"$_=`echo butter`;print"

      but that becomes

      perl -e"print `echo butter`"

      but hang on, we can simplify that further

      echo butter

      Oh dear! Now I've done away with the need for perl altogether, which means this thread becomes off topic and is reaper bait:)

      Levity aside, I think the OP's question really comes down to "Why can't I do..."

      print chomp( `some system command` );

      Which is certainly something I have tried more than once, and the only answers I have come up with, and there is probably better wisdom on this kicking around somewhere, is that if chomp returned the result of the thing it chomped, then

      chomp(@lines) would have to become

      @lines = chomp(@lines) which would be less efficient.

      and if you used it in a while loop

      while(my $line = chomp(<>) ) { #do stuff; }

      The loop would terminate early on zero-length blank lines as chomp would return '', which would test false.


      Examine what is said, not who speaks.
      1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.
      2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible
      3) Any sufficiently advanced technology is indistinguishable from magic.
      Arthur C. Clarke.
      twenty-Four!
      0123456789012345678901234 perl -le 'print`echo foo`=~/(.*)\n/' __output__ foo
      This of course assumes you're only expecting a single line of output, isn't hugely portable and the golf score also depends on the system call.
      HTH

      _________
      broquaint

Re: Re: Simplifying code (Not obfuscation)
by 2mths (Beadle) on Mar 04, 2003 at 11:08 UTC
    Thanks & WTF?! :-)

    Me thinks some time studying this is required. If this isn't an example of obfuscation I don't think I'd want to see one.

      Just in case you don't realise what was meant.. Golf is where Perl programmers try and get a reasonably simple task completed in the least number of (key)strokes. As such it's not quite obfuscation, but it's a very close relative.

      Golfing in everyday code is generally a very bad thing as it results in Perl that consists of streams of delicate logic which are very unreadable, and even less maintainable.

        I have met Golf before, though I don't play (for obvious reasons :-). Actually it was a private message explaining Golf in response to a post on beginners@perl or similar that directed me towards PMs

        Very interesting to read your post, probably even more interesting to finally understand it at some point.

        Forgive me if I don't emulate your solution in my code though :-)