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>