in reply to small sig line

Very nice signature!  It's a prime number generator.

It doesn't run on Windows the way it is, though ... how about just adding the newline character $/, and doing:

X:for(my$x=1;;){$x%$_||next(X)for(2..$x++);print$x.$/}

If you want to make it even shorter, change print to warn:

X:for(my$x=1;;){$x%$_||next(X)for(2..$x++);warn$x.$/}

Of course, since it's not "production code", you can lose the my:

X:for($x=1;;){$x%$_||next(X)for(2..$x++);warn$x.$/}

And converting from for to map saves another character, so you're down to just 50 characters:

X:for($x=1;;){map{$x%$_||next X}2..$x++;warn$x.$/}

Update:  Come to think of it, you don't need the label for next, and you can switch to the "map EXPR,LIST" form of map, to bring it down to 45 characters:

for($x=1;;){map$x%$_||next,2..$x++;warn$x.$/}

Update 2:  From my response below, a better golf score (44 chars) can be achieved with:

$x++;{map$x%$_||redo,2..$x++;warn$x.$/;redo}

s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Replies are listed 'Best First'.
Re^2: small sig line
by dbw (Beadle) on Aug 16, 2007 at 03:17 UTC
    These are good suggestions. I'm not going to take them all: I like that it's UNIX-specific, and I like that it can use strict, and I don't like the warn output. (Though I'll point out that if you use warn you can dispense with the ".$/".) I think I'll use this version:
    /usr/bin/perl '-lefor(my$x=1;;){map$x%$_||next,2..$x++;print$x}'
    And the golfiest version is
    for($x=1;;){map$x%$_||next,2..$x++;warn$x}
    at 42 characters.
      Thanks!

      The reason I used warn with the newline "$/" is that without it, you get a lot of extra clutter:

      1 at x.pl line 2. 2 at x.pl line 2. 3 at x.pl line 2. 5 at x.pl line 2. 7 at x.pl line 2. 11 at x.pl line 2. 13 at x.pl line 2. 17 at x.pl line 2. 19 at x.pl line 2. 23 at x.pl line 2. 29 at x.pl line 2. 31 at x.pl line 2. ...

      but, come to think of it, that's a moot point your case, because of the switches you're using to Perl.

      As far as the golfiest version ... well, you never know. :-)  Here's another example I just thought of which uses the non-newline "warn", but is only 41 characters:

      ++$x;{map$x%$_||redo,2..$x++;warn$x;redo}

      So if you wanted to, you could do something like:

      /usr/bin/perl '-le$x=1;{map$x%$_||redo,2..$x++;print$x;redo}'

      But in the end, the important thing is that whatever you decide to use, you've chosen a signature which fits your unique style and taste.  Thanks for giving us a chance to be a part of the process!


      s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/
        liverpole++, thanks for your help. The first email I sent with that sig, I had the recipient coming into my office asking what it was. :)

        /usr/bin/perl '-lefor(my$x=1;;){map$x%$_||next,2..$x++;print$x}'
        Here's a slight functionality change, along with a pretty good golf score:
        /usr/bin/perl '-nemap$.%$_||redo,2..$.++;print$.--'

        /usr/bin/perl '-lefor(my$x=1;;){map$x%$_||next,2..$x++;print$x}'
Re^2: small sig line
by goibhniu (Hermit) on Aug 18, 2007 at 09:17 UTC

    Here's a Windows version for ya' (sans golfing)

    C:\chas_sandbox>perl -le "X:for(my$x=1;;){$x%$_||next(X)for(2..$x++);p +rint$x}"


    I humbly seek wisdom.