Много лет назад я помню другого программиста, который консультировал это:
new Some::Class; # bad! (but why?)
Some::Class->new(); # good!
К сожалению, теперь я не могу вспомнить причину.:( Обе формы будут работать корректно, даже если конструктор фактически не существует в модуле Some:: Class, но вместо этого наследуется от родителя где-то.
Ни одна из этих форм не такая же, как Some:: Class:: new(), которая не передаст имя класса в качестве первого параметра для конструктора, поэтому эта форма всегда неверна.
Даже если эти две формы эквивалентны, я нахожу Some:: Class- > new() более понятным, так как это следует стандартным соглашениям о вызове метода в модуле, а в perl - "новом", метод не является специальным - конструктор можно назвать чем угодно, а new() мог бы что-либо сделать (хотя, конечно, мы обычно ожидаем, что он будет конструктором).