You force "00001" to be treated as a number, too.
What *is* interesting is *why* "00001" is treated as a number, since there is also the possibility of doing "aaa" ... "zzz" and having it work, too. So why does "00001" end up being treated as "1" by the ".." operator? Probably the perl interpreter looks at your $low and $high and decides they look like numbers.
BTW, you should not do this $low .. $high stuff - it can hang you badly if $low and $high end up to be interpreted as strings.
At least use int($low) .. int($high), to force $low and $high to be interpreted as numbers.
Brainbench MVP for Perl