Hello Michael,

Wednesday, December 05, 2001, Michael McQuarrie <[EMAIL PROTECTED]> wrote:


MM> I am defining a sub that takes only specific options:

MM> sub error_notify
MM> {
MM>   my $ERR_USAGE = "error_notify (e,p,x, \"Message Text\")\n";

MM>   foreach (@_)
MM>   {
MM>     if    (/^e$/)  { push @ERR_OPTS, "email";                         }
MM>     elsif (/^p$/)  { push @ERR_OPTS, "page";                          }
MM>     elsif (/^x$/)  { push @ERR_OPTS, "exit";                          }
MM>     elsif (/^\w$/) { print "Invalid error_notify Option\n$ERR_USAGE";    }
MM>     else           { $MESSAGE = $_; }
MM>   }
MM>   bla bla bla...

MM> This sub is supposed to be called like this:
MM> error_notify(e,p,x,"This is the error message that will be sent out");
bad syntax. you should use ' or " for character variables.
'e','p','x'

MM> The  problem  that  I  am running into is that whenever "q" (which
MM> isn't  a  valid option) is supplied as an argument to the sub like
MM> this:
MM> error_notify(q,"Whatever");
normally, you can not use this syntax. you should get
"Can't find string terminator "," anywhere before EOF"
error from perl. use
error_notify("q","Whatever");
MM> I get an error because the "q" is interpreted as a quote operator.
MM> I  am  using a \w to try and match all invalid options but \w will
MM> not  match  the  q. Anyone know a way around this? I would like to
MM> keep the same syntax for calling the sub.
i suggest you to put
use strict;
line at the top of your source and run
perl -c yoursource
to check syntax.

Best wishes,
 Maxim                            mailto:[EMAIL PROTECTED]



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

Reply via email to