Basically with the @_ and not having parens is like
                $var = scalar(@_); # which is one since @_ is to subs what
@ARGV is to incoming Arguments passed to a module.

        So by doing the parens, you are populating the variables on the left
with values being passed into the sub.

Wags ;) ps others may be to make clearer.

-----Original Message-----
From: Ian Zapczynski [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, July 03, 2002 12:34
Cc: [EMAIL PROTECTED]
Subject: Re: How to pass the value of $@ to a subroutine


Thanks!  Changing:

my $message = @_;
to:
my ($message) = @_;

did put the correct value in the string.

If anyone cares to explain the difference between the code I had and the
code
Shishir suggested so I can understand why this makes a difference, I'm all
ears!

Thanks again,

-Ian


"Shishir K. Singh" wrote:

> >Hello all,
>
> >What I want to do is simple - if an error occurs on my previous command
> >(in this case, making an FTP connection via Net::FTP), I want to send
> >the value of $@ to a subroutine which sends an e-mail containing the
> >value of $@ in the body.  However, it is clear that I don't understand
> >what $@ really is.  Is it a string?  A hash reference?  When I simply
> >print "$@" after the failed command, I see the error I expect.  But when
> >I do something like:
>
> >mailwarning($@) unless $ftp;
>
> >and the subroutine mailwarning() has:
>
> my $message = @_;
>
> >the value of $message is "1".
>
> Try
>
> my $message = shift;
> or
> my ($message) = @_;




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to