Hi all,

I finally decided to use the taint mode in all my CGI scripts. But I experience a 
strange problem. The following two lines read a file depending on the parameter 'jahr':

my ($jahr) = $q->param('jahr');
my %monate = %{do $jahr} or die $!;

This worked. Now, with the -T switch, I have to untaint $jahr, which always consists 
of 4 digits:

my ($jahr) = $q->param('jahr') =~ /\d{4}/;
my %monate = %{do $jahr} or die $!;

The second line now gives me the error:

Can't use an undefined value as a HASH reference at ../cgi-bin/belegung.pl line 20.

Ok, so I checked if $jahr really has a value. It does. I went on adding the following 
check

if (defined $jahr) { my %monate = %{do $jahr} or die $!; }

Still the error message. Now I tried this:

if (defined (do $jahr)) { my %monate = %{do $jahr} or die $!; }

Error message is gone. Mysteriously, the feature of being defined gets lost in the 
transition from $jahr to "do $jahr". I cannot understand this, since it worked before, 
and the content of $jahr has not changed. It still contains a string of 4 digits.

Any ideas?

Thank you,

Jan
-- 
There are two major products that come out of Berkeley: LSD and UNIX. We don't believe 
this to be a coincidence. - Jeremy S. Anderson

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to