in reply to using 'my $var' vs. 'my($var)'
Here is the difference, plus another way to write it.
my $conf_file= @_
creates the $conf_file
scalar variable and sets it to the value of @_
in scalar context, which is... 1, hence the
error message when your script tries to open the1
file.
my( $conf_file)= @_;
creates the scalar variable
$conf_file and puts it in a list (as the first and only element
of that list). Then it sets that list with @_, which means
that the first element in that list ($conf_file)
gets the first element of @_. Which works fine
when called with just one element, but maybe not for the reasons you
thought.
You could also have written
my $conf_file= shift;
which declares the scalar variable $conf_file and
removes the first element from @_ and sets $conf_file
with it.
Which leads me to a style question to my fellow monks: do
you usually use
my( $arg1, $arg2)= @_;
or
my $arg1= shift;
my $arg2= shift; ?
The first option is more compact but the second one lets you check for extra (unwanted) arguments if you want.
I usually use the my( $arg1, $arg2)= @_; form, but maybe it's just lazyness...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
RE: Re: using 'my $var' vs. 'my($var)'
by extremely (Priest) on Oct 27, 2000 at 03:42 UTC | |
by merlyn (Sage) on Oct 27, 2000 at 03:50 UTC |