Chas. Owens wrote:
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";
}
}
say I have file
--file--
something3 one two three and so on
something two two two so one
something one two three
so on and so forth
program
@something = qw/val1 val2 val3 and so forth/;
@something2 = qw/vala valb valb and so forth/;
@something3 = qw/valZ valZ1 valZ2 so forth/;
while ( <file>) {
/^(\S+) .+$/; #find out what
the first word of first line is, in this case-------> something3 ---->
line is something3 one two three.....
@[EMAIL PROTECTED] = split # use the $1 value from
above and use that name to find the appropriate array name that u should
be using for key
# so it
will assign
valZ => something3
valZ1 => one
valZ2 => two
Is that clear? please let me know.
thank you.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/