http://www.perlmonks.org?node_id=70232


in reply to Re: (GOLF)Re: Leading Zeros w/ increment
in thread Leading Zeros w/ increment

If you don't need to pad then $count++ works fine. The trick to this all is that perl's ++ is magical on some strings. Try these:
my ($a, $b, $c, $d, $e) = ("aaa", "ab000", "123", "00123", "321ba",); $a++; $b++; $c++; $d++; $e++; print "a=$a\nb=$b\nc=$c\nd=$d\ne=$e\n"

You'll notice when you run those that $e gets chopped to just numbers. In fact, my stunting isn't really necessary since perl will happily leave the "00" on the front of $d! The only trick to it is never treating $d as a number. Look at this:

# now that is golfing. perl -e '$a="0035";until("$a">50){print++$a,$/}'

Cute huh? Perl is like a squirrel's nest. Good stuff is everywhere but most of it is nuts...

Your code could be re-updated to have quotes around "$String" in the comparison for the loop and just have $String++ where the "magical" part was. Sad that I didn't even know how slick it was. My stunt kept the comparison from blasting the string but it is better just to never treat it numerically.

--
$you = new YOU;
honk() if $you->love(perl)

Replies are listed 'Best First'.
Re: Re: Re: (GOLF)Re: Leading Zeros w/ increment
by idnopheq (Chaplain) on Apr 06, 2001 at 21:57 UTC
    I just had what my high school calculus teacher referred to as a "a-ha experience"! I was treating my script's $d exquivallent as a number, then as text!

    THX
    Dex