Hi Wim
> Hi Bob,
>
> You gave me the following answer earlier:
>
> sub foo {
>
> local @ARGV = @_;
> GetOptions(...blah...);
>
> ...
> }
>
> If I run it as a seperate script, commenting out the (local @ARGV = @_;)
> line, then it works. But it does not work when called as a subroutine from
> within the main script.
Can you be more specific about "does not work" and "called ... from within the
main script"?
Your code below is not a functional example, so I made some changes
(especially inserting "use strict" and "use warnings" which alway gives good
hints :-),
and it works - but maybe in the sense you mentioned that it works for you too:
=== begin script (test3.pl) ===
use strict; use warnings;
use Getopt::Long;
sub notify_email {
local @ARGV = @_;
my (@recipients, @subject, @body);
my %conf=(smtp=>'whatever', smtpsender=>'something');
$ENV{"NTsendmail"} = $conf{'smtp'};
my $sender = $conf{'smtpsender'};
GetOptions ("r=s" => [EMAIL PROTECTED],
"s=s" => [EMAIL PROTECTED],
"b=s" => [EMAIL PROTECTED]);
my $subject = join(" ", @subject);
my $body = join(" ", @body);
foreach my $recipient (@recipients) {
print "$sender, $recipient, $subject, $body\n";
# $mail = new NTsendmail;
# $mail->send($sender, $recipient, $subject, $body);
}
}
notify_email (@ARGV);
=== end script ===
This prints:
something, rrrr, sss, bbbb
> I have also tried (my @ARGV = @_;).
> Any idea why?
>
> Here is my code now:
> =================================================
> # Notify recipients via SMTP (email)
> # Usage: notify_email -r [EMAIL PROTECTED] -r [EMAIL PROTECTED] -s "Subject
> line" -b
> "Message body"
> sub notify_email {
> local @ARGV = @_; # Get the sub's params into the master param array
> for GetOpt::Long
> $ENV{"NTsendmail"} = $conf{'smtp'};
> $sender = $conf{'smtpsender'};
>
> GetOptions ("r=s" => [EMAIL PROTECTED], # -r [EMAIL PROTECTED] -r
> [EMAIL PROTECTED]
> -r [EMAIL PROTECTED]
> "s=s" => [EMAIL PROTECTED], # -s "This is the subject
> line..."
> "b=s" => [EMAIL PROTECTED]); # -b "This is the
> message
> body..."
>
> $subject = join(" ", @subject);
> $body = join(" ", @body);
>
> foreach $recipient (@recipients) {
> print "$sender, $recipient, $subject, $body\n";
> $mail = new NTsendmail;
> $mail->send($sender, $recipient, $subject, $body);
> }
> }
> =================================================
>
> ___________________________________________________________________________
>_______________________________________________________
>
> Standard Bank Disclaimer and Confidentiality Note
[...]
hth, joe
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>