I'm not sure I understood the last half of your node, but, no, you don't get an "ordinary" increment just because a scalar looks like a number. But it can be hard to distinguish an ordinary (numeric) increment from a magic (stringy) increment in such a case. But here are a couple of examples that demonstrate the difference:
#!/usr/bin/perl -w use strict; my $n= '009'; $n++; print $n, $/; print 0+$n, $/; print $n, $/; $n++; print $n, $/; $n= join '', (1..9,0)x7; $n++; print $n, $/; print 0+$n, $/; print $n, $/; my $p= $n; $n++; print $n, $/; print $n-$p, $/;
which produces (minus the comments, of course):
010 # magic increment preserves leading zeros 10 # treating it as a number doesn't give leading zeros 010 # but doesn't strip them from the scalar 11 # but the next increment is numeric not stringy # stringy increment can deal with /any/ number of digits: 1234567890123456789012345678901234567890123456789012345678901234567891 # numbers only have about 20 significant digits: 1.23456789012346e+069 # treating as a number doesn't destroy the string: 1234567890123456789012345678901234567890123456789012345678901234567891 # but the next increment is just numeric 1.23456789012346e+069 0 # and adding 1 to 1e69 does nothing
Hope that helps.
- tye
In reply to Re: A somewhat unexpected side effect... (stringy)
by tye
in thread A somewhat unexpected side effect...
by blazar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |