in reply to Variable scope headaches
Trying to use a variable as a variable name (i.e. "symbolic references") is generally considered a bad idea.
There is an item in the perlfaq about this: How can I use a variable as a variable name?. I highly suggest you read this.
It is considered critical enough that it is explicitly detected and forbidden by use strict; - the inclusion of which is universally considered good practice.
Instead, use a hash variable:
my %tag_value; foreach ( @tagvalue ) { if ( /([\w,_]+):([0-9]+)/ ) { $tag_value{$1} = $2; } else { die "Failed to assign value to $1\n"; } }
By the way I think your die statement is going to have a problem, in that $1 will not be set (at least not to what you think) if it ever gets executed. If the pattern match (regex) fails to match, then none of the positional variables ($1, etc.) get set. Instead, you might say something like:
die "Failed to match tag/value in '$_'\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Variable scope headaches
by nikmit (Sexton) on Jul 27, 2012 at 07:49 UTC |