Thread Code evaluation (6 answers)
Opened by esskar at 2004-02-27 06:03

coax
 2004-02-27 22:50
#14357 #14357
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Meiner Meinung nach kann man ueber 3 Subroutinen wahlweise den Body, den Head oder beide holen, dabei wird anhand des Vorkommenes eines Filehandles angegeben ob die Zeilen in eine Datei geschrieben oder der Rueckgabewert der Funktion sein werden.
Ich wuerde _toporretv immer die Zeilen zurueckgeben lassen und zusaetzlich eine Subschreiben die das in die Datei schreiben uebernimmt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub _write2file {
   my($self, %args) = @_;
   
   my $content = $args{CONTENT};
   my $fh      = $args{FH};
   
   print FH $content or return;
   
   return 1;
}


und dann in etwa so anwenden:

Code: (dl )
1
2
3
4
5
6
7
8
9
sub foo {
   # ...
   
   my $content = $self->header($msgid, $lines);
   
   $self->_write2file(CONTENT => $content,
                      FH      => $fh);
   # ...
}


kannst ja mal schreiben was du von der Idee haelst.


Komplett scheint mir das aber noch nicht, du willst doch noch die Ausgabe auf x Zeilen beschraenken lassen oder ? Sonst verstehe ich naemlich die Bedeutung von $lines nicht.

Code: (dl )
1
2
3
4
5
6
7
     unless($nohead)
    {
       $line =~ /^\.\s*$/ and last;
       $line =~ s/^\.\././;
       $fh ? (print $fh $line) : ($retval .= $line);
    }
    $nohead and $line =~ /^\s*$/ and $nohead = 0;

wuerde ich so schreiben
Code: (dl )
1
2
3
4
5
6
7
8
9
10
     if ($nohead) {
       last if $line =~ /^\.\s*$/;
       $line =~ s/^\.\././;
       $fh ? (print $fh $line)
           : ($retval .= $line);
    }
    else {
       $line =~ /^\s*$/;
       $nohead = 0;
    }


Ist finde ich auf den Blick einleuchtender. Der Rest aber gefaellt mir aber sehr gut.

Der Uebersichtlichkeit halber schreib ich noch den Konditionaloperator immer so.
Code: (dl )
1
2
3
4
 return 
        $fh ? 1
            : wantarray ? split(/\r?\n/, $retval)
                        : $retval;


Der Stil ist Geschmackssache und da sollte jeder seinen eigenen finden.

Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread Code evaluation