new派生クラスにメソッドを実装する2つの方法を見てきました。
方法1:
sub new {
    my $invocant = shift;
    my $class   = ref($invocant) || $invocant; 
    my $self = {};
    bless($self, $class);
    $self = $self->SUPER::new( @_ );
    return($self);
}
方法2:
sub new {
  my $self = shift;
  my $class = ref($self) || $self;
  return $self if ref $self;
  my $base_object = $class->SUPER::new(@_);
  return bless ($base_object, $class);
}
違いが何なのかわかりません。誰か説明してもらえますか?
ref()あなたのコメントと回答から、その部分が悪いことがわかります。
しかし、の使用はSUPER::new(@_)どうですか?最初の例では、hashrefが派生クラスに祝福されてから、そのオブジェクトのSUPERがnew呼び出され、同じオブジェクトに保存されます。
一方、2番目の例では、ベースオブジェクトがクラスのメソッドから作成され、SUPERそれnewが新しいクラスに祝福されます。
これら2つの方法の違いは何ですか?最初のオブジェクトがベースオブジェクトで上書きされているようです。2番目は「二重の祝福」のようです。よくわかりません。