[{"data":1,"prerenderedAt":895},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl":512,"sidebar-sei-cert-perl-coding-standard":518},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":502,"extension":503,"meta":504,"navigation":7,"path":508,"seo":509,"stem":510,"__hash__":511},"content\u002F7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl.md","EXP31-PL. Do not suppress or ignore exceptions",{"type":32,"value":33,"toc":494},"minimark",[34,38,55,68,84,104,113,118,145,214,218,226,298,302,309,313,316,383,387,412,416,466,469,490],[35,36,30],"h1",{"id":37},"exp31-pl-do-not-suppress-or-ignore-exceptions",[39,40,41,42,49,50,54],"p",{},"The ",[43,44,48],"a",{"href":45,"rel":46},"http:\u002F\u002Fperldoc.perl.org\u002Fperlfunc.html",[47],"nofollow","perlfunc"," manpage says, with regard to the built-in ",[51,52,53],"code",{},"  eval forms "," ,",[56,57,58],"blockquote",{},[39,59,60,61,64,65,67],{},"If there is a syntax error or runtime error, or a \"die\" statement is executed, \"eval\" returns an undefined value in scalar context or an empty list in list context, and $@ is set to the error message. If there was no error, $@ is guaranteed to be the empty string. Beware that using \"eval\" neither silences Perl from printing warnings to STDERR, nor does it stuff the text of warning messages into $@.",[62,63],"br",{},"\n...",[62,66],{},"\nIt is also Perl's exception trapping mechanism, where the die operator is used to raise exceptions.",[39,69,70,71,75,76,79,80,83],{},"Note that ",[43,72,74],{"href":73},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl","EXP30-PL. Do not use deprecated or obsolete functions or modules"," recommends using ",[51,77,78],{},"croak()"," rather than ",[51,81,82],{},"die()"," .",[39,85,86,87,90,91,94,95,98,99,101,102,83],{},"Programmers may often suppress exceptions, which is easily accomplished by not examining the ",[51,88,89],{},"$@"," variable (also known as ",[51,92,93],{},"$EVAL_ERROR"," ). Because ",[51,96,97],{},"eval"," makes ignoring exceptions the default, it is critically important that programmers inspect ",[51,100,89],{}," after using ",[51,103,97],{},[39,105,106,107,109,110,112],{},"Exceptions are intended to disrupt the expected control flow of the application. Many exceptions are suppressed out of not knowing how to handle the exception or not even knowing that one may have been thrown. Consequently, exceptions must never be suppressed. If a call to ",[51,108,97],{}," fails, the calling code must at least inspect ",[51,111,89],{}," . If the developer does not know how to handle the exception, he can always propagate it up the stack by issuing his own fatal error.",[114,115,117],"h2",{"id":116},"noncompliant-code-example","Noncompliant Code Example",[39,119,120,121,123,124,126,127,130,131,133,134,137,138,141,142,144],{},"This noncompliant code example uses the ",[51,122,97],{}," built-in form to divide two numbers. Without using ",[51,125,97],{}," , the code would abort if ",[51,128,129],{},"$b"," happened to be 0, but thanks to ",[51,132,97],{}," , code processing can resume normally, with ",[51,135,136],{},"$answer"," being uninitialized. It produces a warning when the uninitialized value is embedded in the string passed to ",[51,139,140],{},"print()"," . So ",[51,143,97],{}," can be used to completely ignore an important error that may occur.",[146,147,149],"code-block",{"quality":148},"bad",[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-perl shiki shiki-themes github-light github-dark monokai","my ($a, $b) = # initialize\nmy $answer;\neval { $answer = $a \u002F $b };\nprint \"The quotient is $answer\\n\";\n","perl","",[51,157,158,175,183,191],{"__ignoreMap":155},[159,160,163,167,171],"span",{"class":161,"line":162},"line",1,[159,164,166],{"class":165},"sC2Qs","my",[159,168,170],{"class":169},"sMOD_"," ($a, $b) = ",[159,172,174],{"class":173},"s8-w5","# initialize\n",[159,176,178,180],{"class":161,"line":177},2,[159,179,166],{"class":165},[159,181,182],{"class":169}," $answer;\n",[159,184,186,188],{"class":161,"line":185},3,[159,187,97],{"class":165},[159,189,190],{"class":169}," { $answer = $a \u002F $b };\n",[159,192,194,198,202,204,208,211],{"class":161,"line":193},4,[159,195,197],{"class":196},"sTrkL","print",[159,199,201],{"class":200},"sstjo"," \"The quotient is ",[159,203,136],{"class":169},[159,205,207],{"class":206},"s7F3e","\\n",[159,209,210],{"class":200},"\"",[159,212,213],{"class":169},";\n",[114,215,217],{"id":216},"compliant-solution","Compliant Solution",[39,219,220,221,223,224,83],{},"This compliant solution checks to see if ",[51,222,97],{}," failed and, if so, emits a warning message and initializes ",[51,225,136],{},[146,227,229],{"quality":228},"good",[150,230,232],{"className":152,"code":231,"language":154,"meta":155,"style":155},"my ($a, $b) = # initialize\nmy $answer;\nif (! eval { $answer = $a \u002F $b }) {\n  carp($@) if $@;\n  $answer = 0;\n}\nprint \"The quotient is $answer\\n\";\n",[51,233,234,242,248,261,271,277,283],{"__ignoreMap":155},[159,235,236,238,240],{"class":161,"line":162},[159,237,166],{"class":165},[159,239,170],{"class":169},[159,241,174],{"class":173},[159,243,244,246],{"class":161,"line":177},[159,245,166],{"class":165},[159,247,182],{"class":169},[159,249,250,253,256,258],{"class":161,"line":185},[159,251,252],{"class":165},"if",[159,254,255],{"class":169}," (! ",[159,257,97],{"class":165},[159,259,260],{"class":169}," { $answer = $a \u002F $b }) {\n",[159,262,263,266,268],{"class":161,"line":193},[159,264,265],{"class":169},"  carp($@) ",[159,267,252],{"class":165},[159,269,270],{"class":169}," $@;\n",[159,272,274],{"class":161,"line":273},5,[159,275,276],{"class":169},"  $answer = 0;\n",[159,278,280],{"class":161,"line":279},6,[159,281,282],{"class":169},"}\n",[159,284,286,288,290,292,294,296],{"class":161,"line":285},7,[159,287,197],{"class":196},[159,289,201],{"class":200},[159,291,136],{"class":169},[159,293,207],{"class":206},[159,295,210],{"class":200},[159,297,213],{"class":169},[114,299,301],{"id":300},"exceptions","Exceptions",[39,303,304,308],{},[305,306,307],"strong",{},"EXP31-PL-EX0"," : Exceptions that occur during the freeing of a resource may be suppressed in those cases where failure to free the resource cannot affect future program behavior. Examples of freeing resources include closing files or network sockets. When closed, normally or abnormally, the exception cannot influence future program behavior through any avenue other than resource exhaustion. When resource exhaustion is adequately handled, it is sufficient to sanitize and log the exception for future improvement; additional error handling is unnecessary in this case.",[114,310,312],{"id":311},"risk-assessment","Risk Assessment",[39,314,315],{},"Suppressing exceptions can result in inconsistent program state and erroneous behavior.",[317,318,319,320,319,350],"table",{},"\n  ",[321,322,323,324,319],"thead",{},"\n    ",[325,326,327,328,327,332,327,335,327,338,327,341,327,344,327,347,323],"tr",{},"\n      ",[329,330,331],"th",{},"Rule",[329,333,334],{},"Severity",[329,336,337],{},"Likelihood",[329,339,340],{},"Detectable",[329,342,343],{},"Repairable",[329,345,346],{},"Priority",[329,348,349],{},"Level",[351,352,323,353,319],"tbody",{},[325,354,327,355,327,359,327,362,327,365,327,368,327,371,327,378,323],{},[356,357,358],"td",{},"EXP31-PL",[356,360,361],{},"Low",[356,363,364],{},"Probable",[356,366,367],{},"Yes",[356,369,370],{},"No",[356,372,374],{"style":373},"color: #27ae60;",[375,376,377],"b",{},"P4",[356,379,380],{"style":373},[375,381,382],{},"L3",[114,384,386],{"id":385},"related-guidelines","Related Guidelines",[317,388,389,397],{},[321,390,391],{},[325,392,393,395],{},[329,394],{},[329,396],{},[351,398,399],{},[325,400,401,406],{},[356,402,403],{},[43,404,405],{"href":23},"CERT Oracle Secure Coding Standard for Java",[356,407,408],{},[43,409,411],{"href":410},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Fexceptional-behavior-err\u002Ferr00-j","ERR00-J. Do not suppress or ignore checked exceptions",[114,413,415],{"id":414},"bibliography","Bibliography",[317,417,420,429],{"className":418},[419],"wrapped",[421,422,423,427],"colgroup",{},[424,425],"col",{"style":426},"width: 50%",[424,428],{"style":426},[351,430,431,447],{},[325,432,435,443],{"className":433},[434],"odd",[356,436,437,438,442],{},"[ ",[43,439,441],{"href":440},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway05","Conway 2005"," ]",[356,444,445],{},[62,446],{},[325,448,451,457],{"className":449},[450],"even",[356,452,437,453,442],{},[43,454,456],{"href":455},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Manpages","Wall 2011",[356,458,459,461,462],{},[43,460,48],{"href":45}," , ",[43,463,465],{"href":464},"http:\u002F\u002Fperldoc.perl.org\u002Fperlvar.html","perlvar",[467,468],"hr",{},[39,470,471,477,478,477,484],{},[43,472,473],{"href":73},[474,475],"img",{"src":476},"\u002Fattachments\u002F88890562\u002F88892207.png"," ",[43,479,481],{"href":480},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002F",[474,482],{"src":483},"\u002Fattachments\u002F88890562\u002F88892209.png",[43,485,487],{"href":486},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl",[474,488],{"src":489},"\u002Fattachments\u002F88890562\u002F88892208.png",[491,492,493],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .sTrkL, html code.shiki .sTrkL{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":155,"searchDepth":177,"depth":177,"links":495},[496,497,498,499,500,501],{"id":116,"depth":177,"text":117},{"id":216,"depth":177,"text":217},{"id":300,"depth":177,"text":301},{"id":311,"depth":177,"text":312},{"id":385,"depth":177,"text":386},{"id":414,"depth":177,"text":415},"The perlfunc manpage says, with regard to the built-in   eval forms  ,","md",{"tags":505},[506,507],"exp","rule","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl",{"title":30,"description":502},"7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl","pfVq8KVutNDxre-xybDeNOMfCcA-tHcTZwIZu1L4d0o",[513,515],{"title":74,"path":73,"stem":514,"children":-1},"7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F2.exp30-pl",{"title":516,"path":486,"stem":517,"children":-1},"EXP32-PL. Do not ignore function return values","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F4.exp32-pl",[519],{"title":520,"path":521,"stem":522,"children":523},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[524,525,580,703,851],{"title":520,"path":521,"stem":522},{"title":526,"path":527,"stem":528,"children":529},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[530,531,535],{"title":526,"path":527,"stem":528},{"title":532,"path":533,"stem":534},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":536,"path":537,"stem":538,"children":539},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[540,541,545,549,553,557,561,565,568,572,576],{"title":536,"path":537,"stem":538},{"title":542,"path":543,"stem":544},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":546,"path":547,"stem":548},"Tool Selection and Validation","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F02.tool-selection-and-validation",{"title":550,"path":551,"stem":552},"Rules versus Recommendations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F03.rules-versus-recommendations",{"title":554,"path":555,"stem":556},"Development Process","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F04.development-process",{"title":558,"path":559,"stem":560},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":562,"path":563,"stem":564},"System Qualities","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F06.system-qualities",{"title":312,"path":566,"stem":567},"\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frisk-assessment","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F07.risk-assessment",{"title":569,"path":570,"stem":571},"Source Code Validation","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsource-code-validation","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F08.source-code-validation",{"title":573,"path":574,"stem":575},"Automatically Generated Code","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F09.automatically-generated-code",{"title":577,"path":578,"stem":579},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":581,"path":582,"stem":583,"children":584},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[585,586,604,621,631,661,665,679,689],{"title":581,"path":582,"stem":583},{"title":587,"path":588,"stem":589,"children":590},"Declarations and Initialization (DCL)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F1.index",[591,592,596,600],{"title":587,"path":588,"stem":589},{"title":593,"path":594,"stem":595},"DCL30-PL. Do not import deprecated modules","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F2.dcl30-pl",{"title":597,"path":598,"stem":599},"DCL31-PL. Do not overload reserved keywords or subroutines","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F3.dcl31-pl",{"title":601,"path":602,"stem":603},"DCL33-PL. Declare identifiers before using them","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F2.declarations-and-initialization-dcl\u002F4.dcl33-pl",{"title":605,"path":606,"stem":607,"children":608},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[609,610,611,612,613,617],{"title":605,"path":606,"stem":607},{"title":74,"path":73,"stem":514},{"title":30,"path":508,"stem":510},{"title":516,"path":486,"stem":517},{"title":614,"path":615,"stem":616},"EXP33-PL. Do not invoke a function in a context for which it is not defined","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F5.exp33-pl",{"title":618,"path":619,"stem":620},"EXP35-PL. Use the correct operator type for comparing values","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp35-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F6.exp35-pl",{"title":622,"path":623,"stem":624,"children":625},"File Input and Output (FIO)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Ffile-input-and-output-fio","7.sei-cert-perl-coding-standard\u002F3.rules\u002F4.file-input-and-output-fio\u002F1.index",[626,627],{"title":622,"path":623,"stem":624},{"title":628,"path":629,"stem":630},"FIO30-PL. Use compatible character encodings when performing network or file I\u002FO","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Ffile-input-and-output-fio\u002Ffio30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F4.file-input-and-output-fio\u002F2.fio30-pl",{"title":632,"path":633,"stem":634,"children":635},"Input Validation and Data Sanitization (IDS)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F1.index",[636,637,641,645,649,653,657],{"title":632,"path":633,"stem":634},{"title":638,"path":639,"stem":640},"IDS30-PL. Exclude user input from format strings","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids30-pl",{"title":642,"path":643,"stem":644},"IDS31-PL. Do not use the two-argument form of open()","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F3.ids31-pl",{"title":646,"path":647,"stem":648},"IDS32-PL. Validate any integer that is used as an array index","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F4.ids32-pl",{"title":650,"path":651,"stem":652},"IDS33-PL. Sanitize untrusted data passed across a trust boundary","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids33-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F5.ids33-pl",{"title":654,"path":655,"stem":656},"IDS34-PL. Do not pass untrusted, unsanitized data to a command interpreter","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids34-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F6.ids34-pl",{"title":658,"path":659,"stem":660},"IDS35-PL. Do not invoke the eval form with a string argument","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Finput-validation-and-data-sanitization-ids\u002Fids35-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F5.input-validation-and-data-sanitization-ids\u002F7.ids35-pl",{"title":662,"path":663,"stem":664},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":666,"path":667,"stem":668,"children":669},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[670,671,675],{"title":666,"path":667,"stem":668},{"title":672,"path":673,"stem":674},"MSC31-PL. Do not embed global statements","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F2.msc31-pl",{"title":676,"path":677,"stem":678},"MSC32-PL. Do not provide a module's version value from outside the module","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F3.msc32-pl",{"title":680,"path":681,"stem":682,"children":683},"Object-Oriented Programming (OOP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","7.sei-cert-perl-coding-standard\u002F3.rules\u002F8.object-oriented-programming-oop\u002F1.index",[684,685],{"title":680,"path":681,"stem":682},{"title":686,"path":687,"stem":688},"OOP32-PL. Prohibit indirect object call syntax","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F8.object-oriented-programming-oop\u002F2.oop32-pl",{"title":690,"path":691,"stem":692,"children":693},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[694,695,699],{"title":690,"path":691,"stem":692},{"title":696,"path":697,"stem":698},"STR30-PL. Capture variables should be read only immediately after a successful regex match","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str\u002Fstr30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F2.str30-pl",{"title":700,"path":701,"stem":702},"STR31-PL. Do not pass string literals to functions expecting regexes","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str\u002Fstr31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F3.str31-pl",{"title":704,"path":705,"stem":706,"children":707},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[708,709,738,771,784,797,810,835,848],{"title":704,"path":705,"stem":706},{"title":587,"path":710,"stem":711,"children":712},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F1.index",[713,714,718,722,726,730,734],{"title":587,"path":710,"stem":711},{"title":715,"path":716,"stem":717},"DCL00-PL. Do not use subroutine prototypes","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F2.dcl00-pl",{"title":719,"path":720,"stem":721},"DCL01-PL. Do not reuse variable names in subscopes","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F3.dcl01-pl",{"title":723,"path":724,"stem":725},"DCL02-PL. Any modified punctuation variable should be declared local","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl02-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F4.dcl02-pl",{"title":727,"path":728,"stem":729},"DCL03-PL. Do not read a foreach iterator variable after the loop has completed","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F5.dcl03-pl",{"title":731,"path":732,"stem":733},"DCL04-PL. Always initialize local variables","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F6.dcl04-pl",{"title":735,"path":736,"stem":737},"DCL05-PL. Prohibit Perl4 package names","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fdeclarations-and-initialization-dcl\u002Fdcl05-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F2.declarations-and-initialization-dcl\u002F7.dcl05-pl",{"title":605,"path":739,"stem":740,"children":741},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[742,743,747,751,755,759,763,767],{"title":605,"path":739,"stem":740},{"title":744,"path":745,"stem":746},"EXP00-PL. Do not return undef","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F2.exp00-pl",{"title":748,"path":749,"stem":750},"EXP01-PL. Do not depend on the return value of functions that lack a return statement","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F3.exp01-pl",{"title":752,"path":753,"stem":754},"EXP03-PL. Do not diminish the benefits of constants by assuming their values in expressions","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F4.exp03-pl",{"title":756,"path":757,"stem":758},"EXP04-PL. Do not mix the early-precedence logical operators with late-precedence logical operators","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F5.exp04-pl",{"title":760,"path":761,"stem":762},"EXP06-PL. Do not use an array in an implicit scalar context","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp06-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F6.exp06-pl",{"title":764,"path":765,"stem":766},"EXP07-PL. Do not modify $_ in list or sorting functions","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp07-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F7.exp07-pl",{"title":768,"path":769,"stem":770},"EXP08-PL. Do not use the one-argument form of select()","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp08-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F8.exp08-pl",{"title":622,"path":772,"stem":773,"children":774},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F1.index",[775,776,780],{"title":622,"path":772,"stem":773},{"title":777,"path":778,"stem":779},"FIO00-PL. Do not use bareword file handles","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio\u002Ffio00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F2.fio00-pl",{"title":781,"path":782,"stem":783},"FIO01-PL. Do not operate on files that can be modified by untrusted users","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Ffile-input-and-output-fio\u002Ffio01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F4.file-input-and-output-fio\u002F3.fio01-pl",{"title":632,"path":785,"stem":786,"children":787},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F1.index",[788,789,793],{"title":632,"path":785,"stem":786},{"title":790,"path":791,"stem":792},"IDS00-PL. Canonicalize path names before validating them","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids\u002Fids00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F2.ids00-pl",{"title":794,"path":795,"stem":796},"IDS01-PL. Use taint mode while being aware of its limitations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Finput-validation-and-data-sanitization-ids\u002Fids01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F5.input-validation-and-data-sanitization-ids\u002F3.ids01-pl",{"title":662,"path":798,"stem":799,"children":800},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[801,802,806],{"title":662,"path":798,"stem":799},{"title":803,"path":804,"stem":805},"INT00-PL. Do not prepend leading zeroes to integer literals","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F2.int00-pl",{"title":807,"path":808,"stem":809},"INT01-PL. Use small integers when precise computation is required","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int\u002Fint01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F3.int01-pl",{"title":666,"path":811,"stem":812,"children":813},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[814,815,819,823,827,831],{"title":666,"path":811,"stem":812},{"title":816,"path":817,"stem":818},"MSC00-PL. Detect and remove dead code","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F2.msc00-pl",{"title":820,"path":821,"stem":822},"MSC01-PL. Detect and remove unused variables","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F3.msc01-pl",{"title":824,"path":825,"stem":826},"MSC02-PL. Run programs with full warnings and strict checking","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc02-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F4.msc02-pl",{"title":828,"path":829,"stem":830},"MSC03-PL. Do not use select() to sleep","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc03-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F5.msc03-pl",{"title":832,"path":833,"stem":834},"MSC04-PL. Do not use comma to separate statements","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc04-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F6.msc04-pl",{"title":680,"path":836,"stem":837,"children":838},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F1.index",[839,840,844],{"title":680,"path":836,"stem":837},{"title":841,"path":842,"stem":843},"OOP00-PL. Do not signify inheritence at runtime","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop00-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F2.oop00-pl",{"title":845,"path":846,"stem":847},"OOP01-PL. Do not access private variables or subroutines in other packages","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop01-pl","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F3.oop01-pl",{"title":690,"path":849,"stem":850},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":852,"path":853,"stem":854,"children":855},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[856,857,861,891],{"title":852,"path":853,"stem":854},{"title":858,"path":859,"stem":860},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":862,"path":863,"stem":864,"children":865},"BB. Analyzers","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F1.index",[866,867,871,875,879,883,887],{"title":862,"path":863,"stem":864},{"title":868,"path":869,"stem":870},"Critic","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fcritic","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F2.critic",{"title":872,"path":873,"stem":874},"Critic_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fcritic_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F3.critic_v",{"title":876,"path":877,"stem":878},"Lint","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Flint","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F4.lint",{"title":880,"path":881,"stem":882},"Lint_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Flint_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F5.lint_v",{"title":884,"path":885,"stem":886},"Security Reviewer - Static Reviewer","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":888,"path":889,"stem":890},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer_v","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F7.security-reviewer-static-reviewer_v",{"title":892,"path":893,"stem":894},"CC. Risk Assessments","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fcc-risk-assessments","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F4.cc-risk-assessments",1775657793719]