[{"data":1,"prerenderedAt":943},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp04-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp04-pl":559,"sidebar-sei-cert-perl-coding-standard":566},[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":549,"extension":550,"meta":551,"navigation":7,"path":555,"seo":556,"stem":557,"__hash__":558},"content\u002F7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F5.exp04-pl.md","EXP04-PL. Do not mix the early-precedence logical operators with late-precedence logical operators",{"type":32,"value":33,"toc":540},"minimark",[34,38,55,97,100,117,158,163,166,187,190,217,226,251,254,277,281,290,313,316,319,346,350,353,418,422,450,454,512,515,536],[35,36,30],"h1",{"id":37},"exp04-pl-do-not-mix-the-early-precedence-logical-operators-with-late-precedence-logical-operators",[39,40,41,42,46,47,50,51,54],"p",{},"Perl provides three logical operators: ",[43,44,45],"code",{},"&&"," , ",[43,48,49],{},"||"," , and ",[43,52,53],{},"!"," , and they have the same meaning as in C.",[39,56,57,58,46,61,50,64,67,68,46,70,50,72,74,75,80,81,85,86,46,88,50,90,92,93,96],{},"Perl also provides three alternative logical operators: ",[43,59,60],{},"and",[43,62,63],{},"or",[43,65,66],{},"not"," . They have the same meanings as ",[43,69,45],{},[43,71,49],{},[43,73,53],{}," . They have much lower binding precedence, which makes them useful for control flow [ ",[76,77,79],"a",{"href":78},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Manpages","Wall 2011"," ]. They are called the ",[82,83,84],"em",{},"late-precedence logical operators"," , whereas ",[43,87,45],{},[43,89,49],{},[43,91,53],{}," are called the ",[82,94,95],{},"early-precedence logical operators"," .",[39,98,99],{},"It is possible to mix the early-precedence logical operators with the late-precedence logical operators, but this mixture of precedence often leads to confusing, counterintuitive behavior. Therefore, every Perl expression should use either the early-precedence operators or the late-precedence ones, never both.",[39,101,102,103,105,106,108,109,111,112,116],{},"Damian Conway recommends avoiding the use of ",[43,104,66],{}," and ",[43,107,60],{}," entirely and using ",[43,110,63],{}," only in control-flow operations, as a failure mode [ ",[76,113,115],{"href":114},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway2005","Conway 2005"," ]:",[118,119,124],"pre",{"className":120,"code":121,"language":122,"meta":123,"style":123},"language-perl shiki shiki-themes github-light github-dark monokai","    print $filehandle $data    or croak(\"Can't write to file: $!\");\n","perl","",[43,125,126],{"__ignoreMap":123},[127,128,131,135,139,142,145,149,152,155],"span",{"class":129,"line":130},"line",1,[127,132,134],{"class":133},"sTrkL","    print",[127,136,138],{"class":137},"sMOD_"," $filehandle $data    ",[127,140,63],{"class":141},"sC2Qs",[127,143,144],{"class":137}," croak(",[127,146,148],{"class":147},"sstjo","\"Can't write to file: ",[127,150,151],{"class":137},"$!",[127,153,154],{"class":147},"\"",[127,156,157],{"class":137},");\n",[159,160,162],"h2",{"id":161},"noncompliant-code-example","Noncompliant Code Example",[39,164,165],{},"This noncompliant code example checks a file for suitability as an output file. It does this by checking to see that the file does not exist.",[118,167,169],{"className":120,"code":168,"language":122,"meta":123,"style":123},"if (not -f $file) {\n",[43,170,171],{"__ignoreMap":123},[127,172,173,176,179,181,184],{"class":129,"line":130},[127,174,175],{"class":141},"if",[127,177,178],{"class":137}," (",[127,180,66],{"class":141},[127,182,183],{"class":141}," -f",[127,185,186],{"class":137}," $file) {\n",[39,188,189],{},"This code is perfectly fine. However, it is later amended to also work if the file does exist but can be overwritten.",[191,192,194],"code-block",{"quality":193},"bad",[118,195,197],{"className":120,"code":196,"language":122,"meta":123,"style":123},"if (not -f $file || -w $file) {\n",[43,198,199],{"__ignoreMap":123},[127,200,201,203,205,207,209,212,215],{"class":129,"line":130},[127,202,175],{"class":141},[127,204,178],{"class":137},[127,206,66],{"class":141},[127,208,183],{"class":141},[127,210,211],{"class":137}," $file || ",[127,213,214],{"class":141},"-w",[127,216,186],{"class":137},[39,218,219,220,222,223,225],{},"This code will not behave as expected because the binding rules are lower for the ",[43,221,66],{}," operator than for the ",[43,224,53],{}," operator. Instead, this code behaves as follows:",[118,227,229],{"className":120,"code":228,"language":122,"meta":123,"style":123},"if (not (-f $file || -w $file)) {\n",[43,230,231],{"__ignoreMap":123},[127,232,233,235,237,239,241,244,246,248],{"class":129,"line":130},[127,234,175],{"class":141},[127,236,178],{"class":137},[127,238,66],{"class":141},[127,240,178],{"class":137},[127,242,243],{"class":141},"-f",[127,245,211],{"class":137},[127,247,214],{"class":141},[127,249,250],{"class":137}," $file)) {\n",[39,252,253],{},"when the maintainer really wanted:",[118,255,257],{"className":120,"code":256,"language":122,"meta":123,"style":123},"if ((not -f $file) || -w $file) {\n",[43,258,259],{"__ignoreMap":123},[127,260,261,263,266,268,270,273,275],{"class":129,"line":130},[127,262,175],{"class":141},[127,264,265],{"class":137}," ((",[127,267,66],{"class":141},[127,269,183],{"class":141},[127,271,272],{"class":137}," $file) || ",[127,274,214],{"class":141},[127,276,186],{"class":137},[159,278,280],{"id":279},"compliant-solution","Compliant Solution",[39,282,283,284,286,287,289],{},"This compliant solution uses the ",[43,285,53],{}," operator in conjunction with the ",[43,288,49],{}," operator. This code has the desired behavior of determining if a file either does not exist or does exist but is overwritable.",[191,291,293],{"quality":292},"good",[118,294,296],{"className":120,"code":295,"language":122,"meta":123,"style":123},"if (! -f $file || -w $file) {\n",[43,297,298],{"__ignoreMap":123},[127,299,300,302,305,307,309,311],{"class":129,"line":130},[127,301,175],{"class":141},[127,303,304],{"class":137}," (! ",[127,306,243],{"class":141},[127,308,211],{"class":137},[127,310,214],{"class":141},[127,312,186],{"class":137},[159,314,280],{"id":315},"compliant-solution-1",[39,317,318],{},"This compliant solution uses the early-precedence operators consistently. Again, the code works as expected.",[191,320,321],{"quality":292},[118,322,324],{"className":120,"code":323,"language":122,"meta":123,"style":123},"if (not -f $file or -w $file) {\n",[43,325,326],{"__ignoreMap":123},[127,327,328,330,332,334,336,339,341,344],{"class":129,"line":130},[127,329,175],{"class":141},[127,331,178],{"class":137},[127,333,66],{"class":141},[127,335,183],{"class":141},[127,337,338],{"class":137}," $file ",[127,340,63],{"class":141},[127,342,343],{"class":141}," -w",[127,345,186],{"class":137},[159,347,349],{"id":348},"risk-assessment","Risk Assessment",[39,351,352],{},"Mixing early-precedence operators with late-precedence operators can produce code with unexpected behavior.",[354,355,356,375],"table",{},[357,358,359],"thead",{},[360,361,362,365,367,369,371,373],"tr",{},[363,364],"th",{},[363,366],{},[363,368],{},[363,370],{},[363,372],{},[363,374],{},[376,377,378,399],"tbody",{},[360,379,380,384,387,390,393,396],{},[381,382,383],"td",{},"Recommendation",[381,385,386],{},"Severity",[381,388,389],{},"Likelihood",[381,391,392],{},"Remediation Cost",[381,394,395],{},"Priority",[381,397,398],{},"Level",[360,400,401,404,407,410,412,415],{},[381,402,403],{},"EXP04-PL",[381,405,406],{},"Low",[381,408,409],{},"Unlikely",[381,411,406],{},[381,413,414],{},"P3",[381,416,417],{},"L3",[159,419,421],{"id":420},"automated-detection","Automated Detection",[354,423,424,432],{},[357,425,426],{},[360,427,428,430],{},[363,429],{},[363,431],{},[376,433,434,442],{},[360,435,436,439],{},[381,437,438],{},"Tool",[381,440,441],{},"Diagnostic",[360,443,444,447],{},[381,445,446],{},"Perl::Critic",[381,448,449],{},"ValuesAndExpressions::ProhibitMixedBooleanOperators",[159,451,453],{"id":452},"bibliography","Bibliography",[354,455,456,464],{},[357,457,458],{},[360,459,460,462],{},[363,461],{},[363,463],{},[376,465,466,490,499],{},[360,467,468,476],{},[381,469,470,471,475],{},"[ ",[76,472,474],{"href":473},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-CPAN","CPAN"," ]",[381,477,478,484,485],{},[76,479,483],{"href":480,"rel":481},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002F",[482],"nofollow","Elliot Shank, Perl-Critic-1.116"," ",[76,486,489],{"href":487,"rel":488},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.112_001\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FValuesAndExpressions\u002FProhibitMixedBooleanOperators.pm",[482],"ProhibitMixedBooleanOperators",[360,491,492,496],{},[381,493,470,494,475],{},[76,495,115],{"href":114},[381,497,498],{},"\"Low-Precedence Operators,\" p. 70",[360,500,501,505],{},[381,502,470,503,475],{},[76,504,79],{"href":78},[381,506,507],{},[76,508,511],{"href":509,"rel":510},"http:\u002F\u002Fperldoc.perl.org\u002Fperlop.html",[482],"perlop",[513,514],"hr",{},[39,516,517,484,524,484,530],{},[76,518,520],{"href":519},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp03-pl",[521,522],"img",{"src":523},"\u002Fattachments\u002F88890562\u002F88892207.png",[76,525,527],{"href":526},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002F",[521,528],{"src":529},"\u002Fattachments\u002F88890562\u002F88892209.png",[76,531,533],{"href":532},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp06-pl",[521,534],{"src":535},"\u002Fattachments\u002F88890562\u002F88892208.png",[537,538,539],"style",{},"html pre.shiki code .sTrkL, html code.shiki .sTrkL{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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":123,"searchDepth":541,"depth":541,"links":542},2,[543,544,545,546,547,548],{"id":161,"depth":541,"text":162},{"id":279,"depth":541,"text":280},{"id":315,"depth":541,"text":280},{"id":348,"depth":541,"text":349},{"id":420,"depth":541,"text":421},{"id":452,"depth":541,"text":453},"Perl provides three logical operators: && , || , and ! , and they have the same meaning as in C.","md",{"tags":552},[553,554],"recommendation","exp","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp04-pl",{"title":30,"description":549},"7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F5.exp04-pl","ba0uvhguggvqeT7Fv45GC-juwP3jYrOiO727o4ARkg0",[560,563],{"title":561,"path":519,"stem":562,"children":-1},"EXP03-PL. Do not diminish the benefits of constants by assuming their values in expressions","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F4.exp03-pl",{"title":564,"path":532,"stem":565,"children":-1},"EXP06-PL. Do not use an array in an implicit scalar context","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F6.exp06-pl",[567],{"title":568,"path":569,"stem":570,"children":571},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[572,573,628,760,899],{"title":568,"path":569,"stem":570},{"title":574,"path":575,"stem":576,"children":577},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[578,579,583],{"title":574,"path":575,"stem":576},{"title":580,"path":581,"stem":582},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":584,"path":585,"stem":586,"children":587},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[588,589,593,597,601,605,609,613,616,620,624],{"title":584,"path":585,"stem":586},{"title":590,"path":591,"stem":592},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":594,"path":595,"stem":596},"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":598,"path":599,"stem":600},"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":602,"path":603,"stem":604},"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":606,"path":607,"stem":608},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":610,"path":611,"stem":612},"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":349,"path":614,"stem":615},"\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":617,"path":618,"stem":619},"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":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":629,"path":630,"stem":631,"children":632},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[633,634,652,678,688,718,722,736,746],{"title":629,"path":630,"stem":631},{"title":635,"path":636,"stem":637,"children":638},"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",[639,640,644,648],{"title":635,"path":636,"stem":637},{"title":641,"path":642,"stem":643},"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":645,"path":646,"stem":647},"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":649,"path":650,"stem":651},"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":653,"path":654,"stem":655,"children":656},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[657,658,662,666,670,674],{"title":653,"path":654,"stem":655},{"title":659,"path":660,"stem":661},"EXP30-PL. Do not use deprecated or obsolete functions or modules","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F2.exp30-pl",{"title":663,"path":664,"stem":665},"EXP31-PL. Do not suppress or ignore exceptions","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl",{"title":667,"path":668,"stem":669},"EXP32-PL. Do not ignore function return values","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F4.exp32-pl",{"title":671,"path":672,"stem":673},"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":675,"path":676,"stem":677},"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":679,"path":680,"stem":681,"children":682},"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",[683,684],{"title":679,"path":680,"stem":681},{"title":685,"path":686,"stem":687},"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":689,"path":690,"stem":691,"children":692},"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",[693,694,698,702,706,710,714],{"title":689,"path":690,"stem":691},{"title":695,"path":696,"stem":697},"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":699,"path":700,"stem":701},"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":703,"path":704,"stem":705},"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":707,"path":708,"stem":709},"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":711,"path":712,"stem":713},"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":715,"path":716,"stem":717},"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":719,"path":720,"stem":721},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":723,"path":724,"stem":725,"children":726},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[727,728,732],{"title":723,"path":724,"stem":725},{"title":729,"path":730,"stem":731},"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":733,"path":734,"stem":735},"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":737,"path":738,"stem":739,"children":740},"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",[741,742],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745},"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":747,"path":748,"stem":749,"children":750},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[751,752,756],{"title":747,"path":748,"stem":749},{"title":753,"path":754,"stem":755},"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":757,"path":758,"stem":759},"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":761,"path":762,"stem":763,"children":764},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[765,766,795,819,832,845,858,883,896],{"title":761,"path":762,"stem":763},{"title":635,"path":767,"stem":768,"children":769},"\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",[770,771,775,779,783,787,791],{"title":635,"path":767,"stem":768},{"title":772,"path":773,"stem":774},"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":776,"path":777,"stem":778},"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":780,"path":781,"stem":782},"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":784,"path":785,"stem":786},"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":788,"path":789,"stem":790},"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":792,"path":793,"stem":794},"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":653,"path":796,"stem":797,"children":798},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[799,800,804,808,809,810,811,815],{"title":653,"path":796,"stem":797},{"title":801,"path":802,"stem":803},"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":805,"path":806,"stem":807},"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":561,"path":519,"stem":562},{"title":30,"path":555,"stem":557},{"title":564,"path":532,"stem":565},{"title":812,"path":813,"stem":814},"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":816,"path":817,"stem":818},"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":679,"path":820,"stem":821,"children":822},"\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",[823,824,828],{"title":679,"path":820,"stem":821},{"title":825,"path":826,"stem":827},"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":829,"path":830,"stem":831},"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":689,"path":833,"stem":834,"children":835},"\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",[836,837,841],{"title":689,"path":833,"stem":834},{"title":838,"path":839,"stem":840},"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":842,"path":843,"stem":844},"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":719,"path":846,"stem":847,"children":848},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[849,850,854],{"title":719,"path":846,"stem":847},{"title":851,"path":852,"stem":853},"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":855,"path":856,"stem":857},"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":723,"path":859,"stem":860,"children":861},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[862,863,867,871,875,879],{"title":723,"path":859,"stem":860},{"title":864,"path":865,"stem":866},"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":868,"path":869,"stem":870},"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":872,"path":873,"stem":874},"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":876,"path":877,"stem":878},"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":880,"path":881,"stem":882},"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":737,"path":884,"stem":885,"children":886},"\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",[887,888,892],{"title":737,"path":884,"stem":885},{"title":889,"path":890,"stem":891},"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":893,"path":894,"stem":895},"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":747,"path":897,"stem":898},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":900,"path":901,"stem":902,"children":903},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[904,905,909,939],{"title":900,"path":901,"stem":902},{"title":906,"path":907,"stem":908},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":910,"path":911,"stem":912,"children":913},"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",[914,915,919,923,927,931,935],{"title":910,"path":911,"stem":912},{"title":916,"path":917,"stem":918},"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":920,"path":921,"stem":922},"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":924,"path":925,"stem":926},"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":928,"path":929,"stem":930},"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":932,"path":933,"stem":934},"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":936,"path":937,"stem":938},"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":940,"path":941,"stem":942},"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",1775657795063]