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>