Hello Mr. Poe & All,

Thank you very much for your articulate & thorough answers. I'm sure
you've enlightened others as well with your response.

I'm a Site Designer turning Perl Hacker over the last 5-6 months &
I'm just concerned about being dangerous in the transition. IMO It's
better that I ask questions & do the homework than to risk my clients
data & servers.

Your contributions to this list and online lessons are of great help.

Thank You!

Best regards,
K.L. Hayes

Monday, January 07, 2002, 2:24:42 PM, you wrote:

CP> --- "K.L. Hayes" <[EMAIL PROTECTED]> wrote:
>> 17:  if ( $tainted_username =~ /^([a-zA-Z\d_]+)$/ )
>> 18:  {
>> 19:      $username = $1;
>> 20:  }
>> 21:  else
>> 22:  {
>> 23:      display_page( $message );
>> 24:      exit;
>> 25:  }
>> 
>> OK... The questions...
>> 
>> 1. Why doesn't "use strict" complain about the $1 not being declared?

CP> "use strict", amongst other things, complains about misspelled lexical variables 
or misspelled
CP> global variables that have been declared with the "use vars" pragma or the new 
"our" keyword (tip:
CP>  "use vars" is better than "our").  The "dollar digit" variables (excluding $0, 
which is the
CP> program name) are special global variables built into Perl.  These variables 
contain the
CP> corresponding subpattern that has been matched in the last successful regex match. 
 Since they are
CP> built into Perl, they do not need to be declared (kind of like $_, @_, etc.).

CP> One important thing to note, though, is that you should usually localize these 
variables if used
CP> in a subroutine.

CP>     sub foo
CP>     {
CP>         my $data = shift;
CP>         local $1;
CP>         return $1 if $data = /(bar)/;
CP>     }

CP> That's important because someone calling your subroutine may also be doing regex 
matching and may
CP> depend on the value of $1, so you don't want to step on this value (of course, 
this is typically
CP> true of all Perl built-in globals).  See 'perldoc -f local' for more information.

>> 2. How can I filter ALL of my form input variables with this regex? Or
>> maybe better asked; How can this be WRITTEN to filter ALL of my form
>> variables at once?

CP> Check out the Untaint or CGI::Untaint modules.  Also, future versions of my 
CGI::Safe module (also
CP> on the CPAN) will include this functionality.

CP> Cheers,
CP> Curtis "Ovid" Poe

CP> =====
CP> "Ovid" on http://www.perlmonks.org/
CP> Someone asked me how to count to 10 in Perl:
CP> push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
CP> shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A

CP> __________________________________________________
CP> Do You Yahoo!?
CP> Send FREE video emails in Yahoo! Mail!
CP> http://promo.yahoo.com/videomail/



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

Reply via email to