On Sat, Apr 19, 2008 at 6:08 PM, Richard Lee <[EMAIL PROTECTED]> wrote:
snip
> sub process_it {
> my($variable, $hash_table) = shift;
>
> }
>
> when I change to separate shift
>
> my $variable = shift;
> my $hash_table = shift;
>
> it worked... are they different?
snip
Yes, shift returns one item from the array it is working on, so the
first is like saying
my ($variable, $hash_table) = 5;
$variable will be 5 and $hash_table will be undefined. To get what
you want you must either say
my ($variable, $hash_table) = (shift, shift);
or the two statements you already used. If you do not need to remove
the values from @_ you can always say
my ($variable, $hash_table) = @_;
--
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/