[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] simple syntax question



Ryan Stille wrote:
> I need to alter the value of some elements passed in from a form, using
> a regular expression.   The only way I could think of to do it was like
> this:
> 
> $tmp1 = $FORM->param('respond_email');
> $tmp2 = $FORM->param('name');
> $tmp1 =~ s/\n|\r//g;
> $tmp2 =~ s/\n|\r//g;
> $FORM->param(-name=>'respond_email',-value=>$tmp1);
> $FORM->param(-name=>'name',         -value=>$tmp2);
> 
> Which I'm sure is not the most elegant.  Is there a way to do it
> without using the tmp variables?

I don't see how to avoid the tmps because s/// changes its operand
in place, while returning the number of substitutions made.
(BTW, you could avoid the temporary with a function like substr(),
because it returns the new value).

I suppose you could hide the temporary in a function like this:

sub remove_newlines {
    my $t = shift;
    $t =~ tr/\r\n//d;
    return $t;
}

allowing you to write code like this (untested):

$FORM->param(-name  => 'name',
             -value => remove_newlines( $FORM->param('name') ) );

BTW, tr/\r\n//d achieves the same result as s/\r|\n//g but is faster
because there's no need to compile no damn regex.

Hugh



	
		
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail