I.E., given this:
$foo = "bar";
if ( $var =~ /<some RE here>/ ) { print "true" }
He wants the expression to evaluate true if $var contains the string $foo; that is, the character '$' followed by 'f' 'o' 'o', not the contents of the Perl variable '$foo'. And it should evaluate to false even if $var contains the string "bar". The question is what the RE should be.
Rob Dixon wrote:
Hi Dan
Not clear what your problem is. This works, is it representative?
my @row = ('print $user;', 'print $password;' );
foreach (@row)
{
print $_;
print ( /\$password/ ? "\t# Invalid" : "\t# OK");
print "\n";
}
Cheers,
Rob
"Dan Muey" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
Hello,
Sorry to bother but...
I have a script that I have to do an eval on code that someone else has put
in a database.
...
$code = "$row[1] $row[2] $row[3]"; # @row is from a database query
eval $code;
if($@) Print "sorry -$@-";
...
It works great except there is one variable that the script uses that I
don't want them to be able to use/modify.
for instance
if $code were to contain :
print $user;
that would be ok and actually encouraged for the purpose of this script but
I can't have them going
but if $code were to contain :
print $password;
that would be bad
so I try to do this :
if($code =~ m/\$password/) { print "NO way pal \n"; } # ie if $code contains
the string '$password' then don't do it!
else {
eval $code;
.....
It seems that since $code = "$row.. uses double quotes it seems that it is
puting the value of $password there instead of the actual string '$password'
I've also tried doing
$code .= $row[1];
$code .= $row[2];
etc..
and also just searching for 'password' instead of with the dollar sign
Is their any way to get that if statement to see $code as 'print $user;print
$password;' instead of 'print joemama;print MyPassWORD;'
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]