Thanks to everyone who replied! Your suggestions cleaned out a block in my mind, and I got it figured out. Here's what works, for those interested:
@allkeys = ('0' x (length(keys(%data)) - 1) . '1' .. (keys(%data)) . ""); - B ps. Is there an easy way to test this versus the solution below, to see which one is faster? I know it won't make much difference, but I was just curious... > Bryan R Harris wrote: >> I'm having trouble with this, and I'm sure someone out there has a >> really clever solution-- >> >> I have a hash, %data, with, say, 32 elements. >> >> From that, I need an array going from 01 to 32, i.e. 01, 02, 03, 04, >> etc. >> >> But if my hash had 750 elements, I'd want it to go from 001 to 750. >> >> I thought this should be easy, but I'm really struggling with it-- >> >> This is the best I've come up with: >> >> @allkeys = ('0' x (length(keys(%data)) - 1) . '1' .. keys(%data)); > > To generate a list from 1 to n, where the values are padded with zeroes to > the length of the longest value, you can do something like: > > my $n = keys %data; > my $l = length $n; > my @arr = map sprintf("%0*d", $l, $_), 1 .. $n; > > But @arr is just a list of numbers. It has no particular correspondence to > the actual keys in %data, so what are you trying to do? -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>