On Sat, Mar 22, 2008 at 1:02 AM, Richard Lee <[EMAIL PROTECTED]> wrote:
> let's say I have
>
>  @someting = qw/1 2 3 4/;
>
>  @something2 = qw/110 11 12/;
>
>  @something3 = qw/20 30 40 50/;
>
>  and I get the name of array from regular expression match something like
>  this from some other file
>
>     $_ =~ /^(\S+) \s\s$/;
>
>  so, now $1 is either something or something2 or something3,
>
>  and if I wanted to do
>
>  something like
>
>  @bigarray{ @something } = split
>
>  how can use $1 to put it inside?
>
>  I was thinking something like
>
>  @bigarray{ @($1) } = split ??
>  but doesn't work..
>  can someone advice?
snip

I am not sure what you are trying to achieve with
"@[EMAIL PROTECTED] = split", it is a hash slice, but the values in
@something don't look like keys, so I assume you didn't mean for it to
be one.  Here is how you can get an array dynamically:

#!/usr/bin/perl

use strict;
use warnings;

my %arrays = (
        something  => [qw<1 2 3 4>],
        something2 => [qw<110 11 12>],
        something3 => [qw<20 30 40 50>]
);

while (<>) {
        if (my ($key) = /^(\S+) \s\s$/) {
                if (exists $arrays{$key}) {
                        print join(",", @{$arrays{$key}}), "\n";
                } else {
                        print "no array named $key\n";
                }
        } else {
                print "input was in the wrong format\n";
        }
}


-- 
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to