рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдореЗрд╢рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдирд╛, рд▓реЙрдЧ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рдЖрджрд┐ред рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:
- рдпрд╣ рдореБрдЦреНрдп рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ ... рдХреЗрд╡рд▓, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдХреЛрдб, рд╢рдкрде рдЧреНрд░рд╣рдг, рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ ... рддрд╛рдХрд┐ рдлрд┐рд░ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рджред рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд▓рдбрд╝рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрд╕рдлрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЙрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЕрдЧрд░ рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЛ рдЦрд░реЛрдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдп рдХреЛрдб рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдлреБрд▓рд╛рддрд╛ рд╣реИ, рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдиреАрд╡рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рддрднреА рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдФрд░ / рдпрд╛ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдлрд┐рд░ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдЕрдВрджрд░ рдЫрд┐рдкрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
warn "i=$i\n" if $DEBUG;
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рдЬрдм $DEBUG==0
рдПрдХ рд╕реНрдХреЗрд▓рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
0;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдирд┐рд░реНрдгрдп рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдХреЛрдб рдФрд░ рднреА рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: if $DEBUG
рдРрд╕реА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА if
рдЗрд╕реЗ рдлрдВрдХреНрд╢рди рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, if
рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдХрд░ рдЗрд╕реЗ рд▓рдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
sub log { return if !$DEBUG; warn "$_[0]\n"; }
log("i=$i");
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрд╛рдлреА рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдИ рд╣реИред рдЕрджрд┐рд╢ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ $DEBUG
рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдорддреМрд░ рдкрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╕реНрд░реЛрдд рдлрд╝рд┐рд▓реНрдЯрд░ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдкрд░реНрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкрд╛рда рдХреА рддрд░рд╣ рдмрджрд▓реЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрдВ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдорд╛рд░реНрдЯ :: рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдореЙрдбреНрдпреВрд▓ рджреЗрдЦреЗрдВ)ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реНрд▓ рднрд╛рд╖рд╛ рдХреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб (рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдлреА рд╕рд░рд▓) рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рдХрднреА-рдХрднреА рдЧрд▓рдд рд╣реЛрддреА рд╣реИрдВ ... рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреАрдбрд╝реЗ рдХреЛ рдвреВрдВрдврдирд╛ рдФрд░ рдареАрдХ рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЦреЛрдиреЗ рдХреА рднрд╛рд╡рдирд╛ рд╣реИ - рдЖрдк рдЕрдм рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХрд┐рд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдЕрд░реНрде рдХреЛ рдирдХрд╛рд░рддреА рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡реЗ рд╢реБрд░реВ рдореЗрдВ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреЗ рдереЗ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
BEGIN {
*log = $ENV{DEBUG} ? sub {warn "@_"} : sub () {0};
}
log+ "data", 123;
рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ log
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкрд░реНрд▓ рдирд┐рд░рдВрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ( BEGIN { *log = sub () {0} }
рдХреЛрдб BEGIN { *log = sub () {0} }
use constant log => 0;
рдХрд╛ use constant log => 0;
рдХрд░рдиреЗ рдХреЗ use constant log => 0;
рд╕рдорд╛рди рд╣реИ use constant log => 0;
) рдирддреАрдЬрддрди, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдЬреЛ рдкрд░реНрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рд╡рд╣ рд╣реИ:
log( +"data", 123 ); # if $ENV{DEBUG}
0 + "data", 123; # if !$ENV{DEBUG}
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ if $DEBUG
рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛, рдФрд░ рдбрд┐рдмрдЧ рдореЛрдб рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ред (рдФрд░ рдЬрдм рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдпреВрдиреАрд░реА рдкреНрд▓рд╕ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ рдЦрд░рд╛рдм рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╡рд┐рдХреГрддрд┐ рдХреЗ рджреЛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИрдВред рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдкрд░ рдкрд╣рд▓рд╛ - рдЪреЗрддрд╛рд╡рдиреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреВрд╕рд░рд╛ - if $DEBUG
рд╡рд┐рдХрд▓реНрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдереЛрдбрд╝реА рдзреАрдореА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдмрдЧ рдореЛрдб рдЕрдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рднреА рд▓реЙрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рдФрд░, рд╢рд╛рдпрдж, рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рджреЛрд╖реЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред