in reply to Re: indirect object in camel book
in thread indirect object in camel book

Nonononono. This is one reason why the indirect syntax is bad. You want to use the new function provided by the CGI package, right? Then, instead of forcing Perl to do your thinking for you, think for yourself!
my $cgi = CGI->new;
Tell Perl which new function you want to use!

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Replies are listed 'Best First'.
Re: Re: Re: indirect object in camel book
by John M. Dlugosz (Monsignor) on Oct 08, 2001 at 20:13 UTC
    I don't see your point. Saying new CGI:: is exactly the same in meaning to CGI->new. That is, you are telling Perl to look at a package named CGI and find the new function using virtual lookup rules.

    Using the ::, the point of my post, makes this syntax unambiguous.

      Yes, new CGI:: is the exact same as CGI->new, in terms of the interpreter.

      However, how do you explain to someone that every single method call you make uses the '->' syntax ... except for the constructor, which doesn't, but instead starts using this (seemingly) random '::' syntax. This isn't the most maintainable concept. What happens if you forget to put the second ':'? The difference between ':' and ';' isn't entirely obvious to a casual glance. In addition, as ':' and ';' are on the same key, mistyping problems are multiplied.

      Essentially, what this boils down to is "Wow, that's a neat way of doing things. I didn't know I could do that. But, why on earth would I want to obfuscate my production code?"

      ------
      We are the carpenters and bricklayers of the Information Age.

      Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

        I guess it's different if you are used to using "indirect object" notation for Class Methods. Not just constructors, but all of them.