Sto facendo un po 'di Perl e vedere le mie dichiarazioni "se" nidificate mi sta facendo impazzire. Sono riuscito a ridurre alcuni di loro con blocchi di guardia in un'altra sezione, ma sono bloccato qui.Dovrei evitare nidificare le istruzioni in Perl?
Pensi che possa lasciare il codice così com'è, oppure esiste un modo "corretto" di rifattorizzare quanto segue? (Ammetto anche di essere relativamente nuovo a Perl)
Questa è in realtà una subroutine che richiede l'input dell'utente su ciascun parametro di una lista (file esterno). $ [3] è il modello di corrispondenza, $ [2] è il valore predefinito per il parametro considerato (NULL se non ce n'è), $ _ [1] specifica se è obbligatorio o meno. la frase 'next' si riferisce al prossimo parametro read (while loop).
Con l'aiuto di tutti (grazie!), Ecco la versione più recente.
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 }
Che cosa ti sta facendo impazzire di questi if nidificati? – innaM
Non lo so, mi sembra che ci sia un altro modo di scrivere che ... –