Thanks, Mike,
I'm almost embarrassed to say that this makes perfect sense. When the geek
toxicity reaches dangerous levels, I'll let you know. You, otoh, must be
like a
snake handler, immune from the rabid bite of the nefarious geek.
Thanks again,
Luana
At 04:38 PM 10/9/98 -0500, you wrote:
>> 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 "<p> $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 "<p> $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 "<p> $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 "<p> $PERMISSIBLE_ARRAY{ $item }\n";
> }
> } else {
> &do_error ("no permissions for $form_data{'access'}");
> }
>
>
>
>
>
>
>
>mike stone <[EMAIL PROTECTED]> 'net geek..
>been there, done that, have network, will travel.
>
>
>
>____________________________________________________________________
>--------------------------------------------------------------------
> Join The Web Consultants Association : Register on our web site Now
>Web Consultants Web Site : http://just4u.com/webconsultants
>If you lose the instructions All subscription/unsubscribing can be done
>directly from our website for all our lists.
>---------------------------------------------------------------------
>
____________________________________________________________________
--------------------------------------------------------------------
Join The Web Consultants Association : Register on our web site Now
Web Consultants Web Site : http://just4u.com/webconsultants
If you lose the instructions All subscription/unsubscribing can be done
directly from our website for all our lists.
---------------------------------------------------------------------