Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: (elbie): What does this warning mean?

by davorg (Chancellor)
on Aug 17, 2001 at 12:08 UTC ( [id://105632]=note: print w/replies, xml ) Need Help??


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 CGI.pm 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 CGI.pm and seems to be the way that most people recommend these days.

If you are going to use the CGI object interface to CGI.pm, 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.

--
<http://www.dave.org.uk>

Perl Training in the UK <http://www.iterative-software.com>

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?

    elbieelbieelbie

      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.

      --
      <http://www.dave.org.uk>

      Perl Training in the UK <http://www.iterative-software.com>

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://105632]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (7)
As of 2024-10-09 14:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    The PerlMonks site front end has:





    Results (45 votes). Check out past polls.

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.