Looking yesterday at a listing of revision dates I saw
Hmm, that 1 and 2 look odd...3-AUG-2007 8-AUG-2007 1-OCT-2007 1-OCT-2007-RevA 1 2
After sleuthing, I ran (something like)
and saw($foo, $bar, $date) = qw(fooa bar7 1-OCT-2007-RevA); print "++$foo ++$bar ++$date\n"
Which puzzled me greatly until I found the auto-increment docsfoob bar8 1
The auto-increment operator has a little extra builtin magic to it. If you increment a variable that is numeric, or that has ever been used in a numeric context, you get a normal increment. If, however, the variable has been used in only string contexts since it was set, and has a value that is not the empty string and matches the pattern /^a-zA-Z*0-9*\z/ , the increment is done as a string, preserving each character within its range, with carry:OK. Problem explained. But here I ask the Perl Monks for explanation. Why? Why limit the magic to strings that match the pattern? When is it ever better to return '1' than the incremented string?
throop
In reply to String increment - reasoning by throop
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |