• [^] # Re: Heu, perl ?

    Posté par . En réponse au message Qui m'aime me suive !!. Évalué à 2.

    perl est difficile a maintenir si l'on approche perl comme n'importe quel autre langage.

    pour donner un exemple, ecrire la doc d'une feuille d'impots est un exercice à plusieurs mains, il faut que cela soit le plus homogene possible sinon c'est inmaintenable.

    j'avais ecrit ce post sur usenet a propos de perl ( effectivement cité sur wikipedia http://fr.wikipedia.org/wiki/Perl_%28langage%29(...) ) :
    http://groups.google.fr/group/fr.comp.lang.perl/msg/f8e35176b2448bb(...)

    un extrait de code pour le SMTP genericisé ( commentaire d'origine ;) ) :

    package HA::Net::SMTP;

    sub import {
    my( $package, $RFC ) = @_;

    # a finir
    $RFC = "RFC2821" unless $RFC;
    $RFC = "RCF$RFC" if $RFC =~ /^\d+$/;
    $DEFAULTRFC = $RFC if $RFC =~ /^RFC\d+$/;
    }


    sub new {
    my( $class, @args ) = @_;

    $class .= "::$DEFAULTRFC"; #gloups risque ici si classe fille mal faite
    $class->new( @args );
    }

    sub helo {
    my( $this, @args ) = @_;

    bless $this, __PACKAGE__."::RFC821";
    $this->helo( @args );
    }

    sub ehlo {
    my( $this, @args ) = @_;

    bless $this, __PACKAGE__."::RFC2821";
    $this->ehlo( @args );
    }


    package HA::Net::SMTP::RFC2821;

    use strict;
    use base qw( HA::Net::SMTP );

    sub ehlo {
    my( $this, $p ) = @_;

    $this->sendline( "EHLO " . $p->( "domain" ) );
    return $this->return_code_is( "250" );
    }


    package HA::Net::SMTP::RFC821;

    use strict;
    use base qw( HA::Net::SMTP );


    sub helo {
    my( $this, $param ) = @_;

    $this->sendline( "HELO " . $param->( "domain" ) );
    return $this->return_code_is( "250" );
    }