CPAN: wie organisiert ihr euren Quellcode?

Beitrag lesen

Zurückgeben brauche ich das Handle aber doch eigentlich nicht?

Richtig, mir ging es nur darum, </archiv/2010/3/t195945/#m1312229> ③ zu vermeiden.

Wenn ich das richtig verstehe, geht auch nur ENTWEDER ODER, also prozedual oder objektorientert programmieren?

Im Prinzip ja, aber pauschal nein. Ein gewitzter Programmierer kann ein objektorientertes Interface zur Bequemlichkeit für den Benutzer mit einem prozeduralen umhüllen:

  
package Zonk;  
  
sub new { ... return bless ... }  
sub methode1 { my ($self) = @_; ... kompliziertes zeug }  
  
sub bequem_und_schnell {  
    my (@param) = @_;  
    return __CLASS__  
        ->new       # Konstruktor mit Defaults  
        ->methode1(@param);  
}  
  
=head1 SYNOPSIS  
  
    use Zonk;  
    my $z = Zonk->new(dies und das und noch viel mehr);  
    $z->methode1(blah); # flurbelt das Flummox mittels "blah"  
    # oder  
    Zonk::bequem_und_schnell(blah); # flurbelt das Flummox mittels "blah"  
  

Oder umgekehrt ein prozedurales mit einem objektorienterten umhüllen; dies wird häufig so gemacht, wenn "stimmt_das_so" eine XS-Funktion ist:

  
package Narf;  
  
sub stimmt_das_so {  
    return 1; # jawoll.  
}  
  
sub new {  
    my ($class) = @_;  
    return bless {} => $class;  
}  
  
sub check {  
    my ($self) = @_;  
    return stimmt_das_so;  
}  
  
=head1 SYNOPSIS  
  
    use Narf;  
    Narf::stimmt_das_so; # diesen Aufruf vermeiden, besser:  
    Narf->new->check;  

OO-Experten können zwei Gründe nennen, warum das Umhüllen, so wie ich es auf die Schnelle dargelegt habe, schädlich ist.

Hast du vielleicht noch eine weitere Buchempfehlung für mich?

http://www.effectiveperlprogramming.com/ auf der rechten Seite. Diese neue zweite Ausgabe ist zwar noch nicht veröffentlicht, kommt aber sehr bald.