Hi Bob, (Offer Kaye, thanks for the reply as well!)
I used the method below (local @ARGV = @_;) to get the values of @_ into @ARGV for the use of Getopt::Long. It appears to be working fine like that. I now have another problem with, it appears, syntax. The IF statement is part of a block in the switch statement, but there is nothing wrong with the switch statement itself, as there are many identical if statements there. If I comment out this if statement, I don't get the error anymore. An clues as to the correct syntax??? I run the subroutine as follows: if ($conf{'pnl_check_for_analytics_email'} =~ 'ON') { notify_email -r [EMAIL PROTECTED] -r [EMAIL PROTECTED] -s "Subject line" -b "Message body" }; But I get the following error when it executes: Bad switch statement (problem in the code block?) Please see the code below: ============================================================================ ============== # 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'}; my @recipients; my @subject; my $body; GetOptions ("r=s" => [EMAIL PROTECTED], # -r [EMAIL PROTECTED] -r [EMAIL PROTECTED] -r [EMAIL PROTECTED] "s=s" => $subject, # -s "This is the subject line..." "b=s" => $body); # -b "This is the message body..." [EMAIL PROTECTED] = split(/,/,join(',',@recipients)); #$subject = join(" ", @subject); #$body = join(" ", @body); foreach $recipient (@recipients) { print "$sender, $recipient, $subject, $body\n"; $mail = new NTsendmail; $mail->send($sender, $recipient, $subject, $body); } } ============================================================================ ============== -----Original Message----- From: Bob Showalter [mailto:[EMAIL PROTECTED] Sent: 20 April 2005 02:31 PM To: Olivier, Wim W; Perl Beginners (E-mail) Subject: RE: GetOpt::Long Olivier, Wim W wrote: > Hi all, > > Is it possible to use GetOpt::Long (or something similar) in a > subroutine > using @_ instead of in the standard way (using @ARGV)? This should work: sub foo { local @ARGV = @_; GetOptions(...blah...); ... } __________________________________________________________________________________________________________________________________ Standard Bank Disclaimer and Confidentiality Note This e-mail, its attachments and any rights attaching hereto are, unless the context clearly indicates otherwise, the property of Standard Bank Group Limited and/or its subsidiaries ("the Group"). It is confidential, private and intended for the addressee only. Should you not be the addressee and receive this e-mail by mistake, kindly notify the sender, and delete this e-mail, immediately and do not disclose or use same in any manner whatsoever. Views and opinions expressed in this e-mail are those of the sender unless clearly stated as those of the Group. The Group accepts no liability whatsoever for any loss or damages whatsoever and howsoever incurred, or suffered, resulting, or arising, from the use of this email or its attachments. The Group does not warrant the integrity of this e-mail nor that it is free of errors, viruses, interception or interference. Licensed divisions of the Standard Bank Group are authorised financial services providers in terms of the Financial Advisory and Intermediary Services Act, No 37 of 2002 (FAIS). For information about the Standard Bank Group Limited visit our website http://www.standardbank.co.za ___________________________________________________________________________________________________________________________________ -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>