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]