On Thursday 29 Apr 2010 20:57:18 Akhthar Parvez K wrote:
> On Thursday 29 Apr 2010, Shlomi Fish wrote:
> > Just do:
> >
> > my ($name) = Function1 ($arg);
> >
> > This will evaluate Function1 in list context (instead of scalar or void
> > context) and only get the first element. But the @_ of a function is not
> > affected by calls to other functions inside it.
>
> Correct and thanks for clearing my misconception! Is there any way to catch
> only the second return value then? I am not so sure but I think I had done
> it in the past using the method that I mentioned earlier (or similar).
As John noted, you can do it like this:
my (undef, $name) = Function1 ($arg);
Or alternatively (and less preferably):
my $name = (Function1 ($arg))[1];
Note that you shouldn't return too many individual and distinct values out of
your subroutines (unless you're returning a list of values of arbitrary length
and clobbering the return list instead of passing it as an array reference),
and instead opt for either named return values:
[code] # Untested
sub myfunc
{
.
.
.
return
{
first => "Bart",
last => "Simpson",
city => "Springfield",
country => "USA",
.
.
.
};
}
[/code]
Or preferably make a good use of Perl's Object Oriented Programming features.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
The Case for File Swapping - http://shlom.in/file-swap
God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/