Alpine has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,
I am new to this forum and I am pretty much a perl newbie, so I apologize in advance if this problem seems trivial.
If I have a script with 3 arrays, is there a way to print the contents of one of the arrays by specifying it's name in the first two arguments? For example, I have the following test code:
use strict; use warnings; # array choices my @ab = ("one", "two", "three"); my @cd = ("four", "five", "six"); my @ef = ("seven", "eight", "nine"); # Print contents of the chosen array foreach my $item (@{@ARGV[0..1]}) { print "$item\n"; }
I would like to be able to print the contents of any one of the arrays by specifying it's name as the combination of the first two arguments ($ARGV[0] and $ARGV1), as seen below:
>perl test.plx a b one two three
Unfortunately, I see the error "Can't use string ("b") as an ARRAY ref while "strict refs" in use at test.plx line 12." with this code. I have worked on this for a bit, but I am missing something. Would anyone have an idea of how to go about doing this? I would appreciate any help on this.

Regards,
Alpine

Replies are listed 'Best First'.
Re: How to select an array
by Corion (Patriarch) on Sep 18, 2007 at 14:19 UTC
      Thanks for your feedback - I definitely need to read this!
      --Alpine
Re: How to select an array
by ikegami (Patriarch) on Sep 18, 2007 at 14:31 UTC

    And here's a case-specific solution.

    use strict; use warnings; # array choices my %arrays = ( ab => [ "one", "two", "three" ], cd => [ "four", "five", "six" ], ef => [ "seven", "eight", "nine" ], ); my $sel = join '', @ARGV[0..1]; # Print contents of the chosen array foreach my $item (@{$arrays{$sel}}) { print "$item\n"; }
      Thank you for this solution. I didn't think about using 'hashes'.
      --Alpine