Number 1 is just weird and number 2 doesn't compile.
Huh? 2 compiles perfectly well for me!
# Doggie.pm package Doggie; 1; sub new { # ignore args print "hello from Doggie::new\n"; }
use strict; use warnings; use Doggie; sub Doggie { print "hello from main::Doggie\n"; } my $objref1 = Doggie::->new(Tail => 'short', Ears => 'long'); my $objref2 = new Doggie:: Tail => 'short', Ears => 'long'; # The following is parsed as Doggie()->new(...) # my $objref3 = Doggie->new(Tail => 'short', Ears => 'long'); __END__
hello from Doggie::new hello from Doggie::new
Also, in addition to the use that adrianh cited, 1 would be useful in the rare case in which one wants to use a class that has the same name as a subroutine defined in the client package. In such a case, as the OP has already noted, the parser gets confused with 3.
the lowliest monk
In reply to Re^2: P248 programming perl
by tlm
in thread P248 programming perl
by wackattack
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |