Tôi đang làm một số Perl và nhìn thấy lồng nhau của tôi "nếu" báo cáo là lái xe cho tôi điên. Tôi quản lý để giảm một số người trong số họ với các khối bảo vệ trong một phần khác, nhưng tôi bị mắc kẹt ở đây.Tôi có nên tránh lồng nhau nếu các câu lệnh trong Perl không?
Bạn có nghĩ rằng tôi có thể để nguyên mã như vậy hoặc có cách "thích hợp" để cấu trúc lại những điều sau không? (Tôi cũng thừa nhận là tương đối mới đối với Perl)
Đây thực sự là chương trình con yêu cầu người dùng nhập vào từng thông số của danh sách (tệp bên ngoài). $ [3] là mẫu phù hợp, $ [2] là giá trị mặc định cho tham số được xem xét (NULL nếu không có), $ _ [1] chỉ định nếu nó là bắt buộc hay không. câu lệnh 'next' dùng để chỉ tham số tiếp theo đọc (while loop).
Với sự giúp đỡ của mọi người (cảm ơn!), Đây là phiên bản mới nhất.
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 }
Điều gì đặc biệt khiến bạn phát điên về những ifs lồng nhau? – innaM
Tôi không biết, tôi chỉ cảm thấy như có một cách khác để viết rằng ... –