in reply to (elbie): What does this warning mean?
in thread What does this warning mean?

It's a long message because the script probably contains use diagnostics.

Creating a CGI object will have no effect here. The script will be using

use CGI qw(:standard);

instead of just

use CGI;

This imports the functions into your symbol table and means that you don't need to create a CGI object (actually the module does it for you behind the screens). This is a far easier way to use and seems to be the way that most people recommend these days.

If you are going to use the CGI object interface to, then please don't use the new CGI syntax as there are subtle dangers with it as noted in The Perl Cookbook and Object Oriented Perl. It is far better to use syntax like CGI->new.


Perl Training in the UK <>

Replies are listed 'Best First'.
(elbie 2): What does this warning mean?
by elbie (Curate) on Aug 17, 2001 at 18:26 UTC
    I was unaware that one could run into problems using the object orientet syntax. I went and looked in the Perl Cookbook, but all I saw was a line that recommended the "procedural farmat for casual use", but it didn't really give me much of a reason for it.

    I don't have access to Object Oriented Perl. What sort of dangers are you referring to?


      In the Cookbook, it's page 446 "A Warning on Indirect Object Notation" and in OOP it's pp98-101 "Another way to call a constructor".

      To summarise, there are two problems with it:

      1. The classname in method CLASS must be a bare symbol, a block or a scalar variable. It can't be just any old scalar expression. This can lead to surprising parsing.
      2. Perl needs to guess whether the method is, in fact, a method or a function. It can sometimes get this wrong. Particularly if your method has the same name as a function in your main package.

      In general it will work fine, but the times that it won't work are so difficult to keep a track of that it's best to never use it. There's no good reason not to use the alternative CLASS->method syntax, so I see it as a good habit to get into.


      Perl Training in the UK <>