Sollte ich vermeiden Sie verschachtelte if-Anweisungen in Perl?

Mache ich einige Perl-und da mein verschachtelte "wenn" - Aussagen ist das fahren mich verrückt. Ich habe es geschafft zu reduzieren, einige von Ihnen mit guard blockiert, die in einem anderen Abschnitt, aber ich bin hier hängengeblieben.

Glaubst du, ich kann den code belassen wie er ist, oder ist es eine "richtige" Art und Weise umgestalten, die folgenden ? (Auch ich zugeben, als relativ neu in Perl)

Dies ist eigentlich ein Unterprogramm Fragen für den Benutzer Eingang für jeden Parameter eine Liste (externe Datei). $[3] wird das matching-pattern, $[2] ist der default-Wert für die betrachteten parameter (NULL, wenn es keines gibt), $_[1] gibt an, ob es obligatorisch ist oder nicht. der 'next' - Anweisung bezieht sich auf den nächsten parameter Lesen (while-Schleife).

Mit jeder s Hilfe (vielen Dank !), hier ist die neueste version.

100         if ( $input ne '' && ( $input !~ $match || $input =~ /'.+'/ ) ) {
101             print "! Format not respected. Match : /$match/(without \' \')\n";
102             next;
103         }
104         if ( $input eq '' ) {
105             if ( $default eq 'NULL' ) {
106                 if ( $manda eq 'y' ) {
107                     print "! Mandatory parameter not filled in\n";
108                     next;
109                 }
110                 print "+ Ignoring parameter.\n";
111                 $input = '';
112             }
113             else {
114                 print "+ Using default value\n";
115                 $input = $default;
116             }
117         }

 98        if($input eq ''){
 99             if($_[2] eq 'NULL'){
100                 if($_[1] eq 'y'){
101                     print "! Mandatory parameter not filled in\n";
102                     next;
103                 }
104                 else{
105                     print "+ Ignoring parameter.\n";
106                     $input = '';
107                 }
108             }
109             else{
110                 print "+ Using default value\n";
111                 $input = $_[2];
112             }
113         }
114         elsif($input !~ $_[3] || $input =~ /'.+'/){
115                 print "! Format not respected. Match : /$_[3]/(without \' \')\n"; 
116                 next;
117             }
118         }
  • Was konkret ist es, das treibt Sie verrückt über diese verschachtelten ifs?
  • Ich weiß nicht, ich habe einfach das Gefühl es ist eine andere Art des Schreibens, die...
InformationsquelleAutor Isaac Clarke | 2009-07-28
Schreibe einen Kommentar