throop has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: String increment - reasoning
by shmem (Chancellor) on Oct 02, 2007 at 14:22 UTC | |
by dsheroh (Monsignor) on Oct 02, 2007 at 15:27 UTC | |
by Fletch (Bishop) on Oct 02, 2007 at 16:46 UTC | |
by shmem (Chancellor) on Oct 03, 2007 at 21:53 UTC | |
by eric256 (Parson) on Oct 03, 2007 at 23:39 UTC | |
|
Re: String increment - reasoning
by BrowserUk (Patriarch) on Oct 02, 2007 at 14:05 UTC | |
by graff (Chancellor) on Oct 02, 2007 at 17:40 UTC | |
by BrowserUk (Patriarch) on Oct 02, 2007 at 23:20 UTC | |
|
Re: String increment - reasoning
by ikegami (Patriarch) on Oct 02, 2007 at 14:05 UTC |