YenForYang has asked for the wisdom of the Perl Monks concerning the following question:
(Note: I am aware that the standard way is to use Some::Class->new, but a static function (should?) work
First I do require, as use allows them both to work for some reason (why?):
require Net::Curl; Then, the following (assume I have use strict) fails with Bareword "Net::Curl::Easy::new" not allowed while "strict subs" in usewhile the following does notmy $c = Net::Curl::Easy::new;
my $c = Net::Curl::Easy->new;
Also weird is that if I enter
in Reply it works (as two commands). But if I entered the commands on the same line: require Net::Curl;my $c = Net::Curl::Easy::new; it fails (why?).require Net::Curl; my $c = Net::Curl::Easy::new;
In addition, I'm not quite understanding the difference(s) between all these (note the command clearly isn't a reference, but just for the sake of argument). Which ones are the same, which ones are different (in general), which ones are the same in this case?:
&Net::Curl::Easy::new; &Net::Curl::Easy::new(); Net::Curl::Easy::new(); Net::Curl::Easy::new; &{Net::Curl::Easy::new}; #equivalent to Net::Curl::Easy::new->&*,right +? Net::Curl::Easy::new->();
EDIT Not using the strict pragma gives the error: 'easy' is not a Net::Curl::Easy object at the line assigning $c. I thought parentheses aren't necessary here (perldoc/perlsub):
The & is optional in modern Perl, as are parentheses if the subroutine has been predeclared.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Why does Net::Curl::Easy->new work but Net::Curl::Easy::new does NOT?
by LanX (Saint) on May 07, 2018 at 19:30 UTC | |
|
Re: Why does Net::Curl::Easy->new work but Net::Curl::Easy::new does NOT?
by shmem (Chancellor) on May 07, 2018 at 23:39 UTC |