Subject: Re: PERL array question > Can it be done? well, yes.. it's possible to do exactly what you've asked, but there are other, cleaner ways to do the same thing. if you have a set of lists: @list_one = (1..5); @list_two = (2..10); @list_three = (a..e); @list_four = (j..n); @list_five = (A..Z); you can store the name of the list you want in a variable, and use that to reference the list: for $item ('one', 'two', 'three', 'four', 'five') { $list_name = "list_" . $item; print ${ $list_name }[3], "\n"; } basically, the interpreter says, "hmm.. there's a variable where i'd normally expect to see the name of the list. oh well, i'll just find out what's in the variable, then see if there's a list that goes by that name." that technique has some problems, though.. for one thing, it's a bitch to try and track down a typo. if you pass the name of the list in from a form, f'rinstance, but accidentally type "admiin" instead of "admin", your script won't work. that's not such a big deal by itself, but you can't learn that by looking at the code. a cleaner way to do the same job, which is also a bit easier to read and debug, is: %PERMISSIONS = ( 'admin', '1,2,3,4,5', 'user', '1,2,3', ); $permission = $PERMISSIONS{ $form_data{'access'} }; if ( ! defined ($permission) ) { &do_error ("no permissions for $form_data{'access'}"); exit (1); } @perm_list = split (/,/, $permission); for $item (@perm_list) { print "

$PERMISSIBLE_ARRAY{ $item }\n"; } which, if you want to be showy, can be compressed into: %PERMISSIONS = ( 'admin', '1,2,3,4,5', 'user', '1,2,3', ); if (defined ($PERMISSIONS{ $form_data{'access'} })) { for $item ( split (/,/, $PERMISSIONS{ $form_data{'access'}) ) { print "

$PERMISSIBLE_ARRAY{ $item }\n"; } } else { &do_error ("no permissions for $form_data{'access'}"); } of course, if you really want to geek out, you can use what are called 'references', and put the lists directly into the array: @auth_admin = ('1', '2', '3', '4', '5'); @auth_user = ('1', '2', '3'); %PERMISSIONS = ( 'admin', \@auth_admin, 'user', \@auth_user, ); $permission = $PERMISSIONS{ $form_data{'access'} }; if ( ! defined ($permission) ) { &do_error ("no permissions for $form_data{'access'}"); exit (1); } for $item (@{ $permission }) { print "

$PERMISSIBLE_ARRAY{ $item }\n"; } or, at geek levels approaching the toxic: %PERMISSIONS = ( 'admin', [ 1,2,3,4,5 ], 'user', [ 1,2,3 ], ); if (defined ($PERMISSIONS{ $form_data{'access'} })) { for $item ( @$PERMISSIONS{ $form_data{'access'}) ) { print "

$PERMISSIBLE_ARRAY{ $item }\n"; } } else { &do_error ("no permissions for $form_data{'access'}"); }