on Tue, 09 Apr 2002 08:26:01 GMT, Connie Chan wrote:

> I have this statement 
> if ( $ENV{REQUEST_METHOD} eq "GET")
> {
> .......
> .......
> }
> 
> That works fine if I don't use -w , but if I use  -w, 
> it tells "Use of uninitialized value in string eq at....."

It doesn't work fine without '-w'!
By using the '-w' flag (or the 'use warnings;' pragma) you instruct perl
to tell you when something is wrong. In this case it tells you that
'$ENV{REQUEST_METHOD}' is not initialized, which means that there is no
variable 'REQUEST_METHOD' in your environment (maybe you are testing a
CGI-program from the command line?). 

> Is that related to declare it first such as :
> my $req = $ENV{REQUEST_METHOD};

No. Here you assign an uninitialized value to a lexical variable. 
'$ENV{REQUEST_METHOD}' is still undefined, as is '$req' after the 
assignment.
You can test this with the following statement:

        print '$req is not defined' unless defined($req);

'use strict;', or "use strict 'vars';" to be more precise, generates an 
error message when you access a variable that was not declared with 
'our', 'my' or 'use vars', unless it is fully qualified (as in 
'$foo::var').

%ENV is a global special hash, which doesn't care about 'use strict;'. 
However, you can test the existence of the 'REQUEST_METHOD' key in the 
'%ENV' hash as follows:

        print '$ENV{REQUEST_METHOD} does not exist'
                        unless exists($ENV{REQUEST_METHOD});

But the real message here is that you should *not* use this method for 
CGI interaction. Use CGI.pm instead.

-- 
felix





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

Reply via email to