Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

"my ($var) = $ARGV[0]" vs "my ($var); $var = $ARGV[0]"

Posted on 1998-10-24
6
Medium Priority
?
230 Views
Last Modified: 2010-03-05
The following doesn't work if I ran script without parameters:

# doesn't work!
my ($login) = $ARGV[0] or die "$0: login parameter not set!\n";

And if I modify the text:

# it works
my ($login);
$login = $ARGV[0] or die "$0: login parameter not set!\n";

- everything is ok.

What is the difference? When it is possible to use my() in assignments?
0
Comment
Question by:dda
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
6 Comments
 
LVL 4

Author Comment

by:dda
ID: 1205695
Thanks. It works.
0
 
LVL 84

Expert Comment

by:ozo
ID: 1205694
#my ($login) is a list, and a list assignment returns its length.  try:
my $login = $ARGV[0] or die "$0: login parameter not set!\n";

#(but note that it also dies if you give the parameter "0")
0
 
LVL 4

Author Comment

by:dda
ID: 1205696
2ozo: Why do you leave this question unlocked? Are you on a vacation? :)
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 84

Expert Comment

by:ozo
ID: 1205697
I wanted to wait for any followup questions.
The difference is not in the my.  it's the difference between a list assignment and a scalar assignment.
 ($login) = $ARGV[0] or die "$0: login parameter not set!\n";
will do the same thing as your first example.
0
 
LVL 4

Author Comment

by:dda
ID: 1205698
Ok, I'm getting more familiar with all this stuff, thanks. Please take your points. Your assistance is greatly appreciated.
Dmitry.
0
 
LVL 84

Accepted Solution

by:
ozo earned 200 total points
ID: 1205699
 my ($login)
#is a list

  my $login
#is a scalar

# or evaluates its left argument as a scalar
#the scalar value of the assignment
  $login = $ARGV[0]
#or
  my $login = $ARGV[0]
#is the value assigned

#the scalar value of the assignment
  ($login) = $ARGV[0]
#or
  my ($login) = $ARGV[0]
#or
 (my $login) = $ARGV[0]
#is the number of values assigned
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question