[{"data":1,"prerenderedAt":1050},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl":668,"sidebar-sei-cert-perl-coding-standard":675},[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":41,"extension":659,"meta":660,"navigation":7,"path":664,"seo":665,"stem":666,"__hash__":667},"content\u002F7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F4.exp32-pl.md","EXP32-PL. Do not ignore function return values",{"type":32,"value":33,"toc":650},"minimark",[34,38,42,45,50,53,117,120,124,127,208,230,234,241,254,306,327,337,341,344,410,414,508,512,563,567,624,646],[35,36,30],"h1",{"id":37},"exp32-pl-do-not-ignore-function-return-values",[39,40,41],"p",{},"Many functions return useful values whether or not the function has side effects. In most cases, this value signifies whether the function successfully completed its task or if some error occurred. Other times, the value is the result of some computation and is an integral part of the function's API.",[39,43,44],{},"Because a return value often contains important information about possible errors, it should always be checked; otherwise, the cast should be made explicit to signify programmer intent.",[46,47,49],"h2",{"id":48},"noncompliant-code-example","Noncompliant Code Example",[39,51,52],{},"This noncompliant code example opens a file, reads in its information, and closes it again.",[54,55,57],"code-block",{"quality":56},"bad",[58,59,64],"pre",{"className":60,"code":61,"language":62,"meta":63,"style":63},"language-perl shiki shiki-themes github-light github-dark monokai","my $source;\nopen(my $SOURCE, \"\u003C\", $source);\n@lines = (\u003C$SOURCE>);\nclose($SOURCE);\n","perl","",[65,66,67,80,102,108],"code",{"__ignoreMap":63},[68,69,72,76],"span",{"class":70,"line":71},"line",1,[68,73,75],{"class":74},"sC2Qs","my",[68,77,79],{"class":78},"sMOD_"," $source;\n",[68,81,83,87,90,92,95,99],{"class":70,"line":82},2,[68,84,86],{"class":85},"sTrkL","open",[68,88,89],{"class":78},"(",[68,91,75],{"class":74},[68,93,94],{"class":78}," $SOURCE, ",[68,96,98],{"class":97},"sstjo","\"\u003C\"",[68,100,101],{"class":78},", $source);\n",[68,103,105],{"class":70,"line":104},3,[68,106,107],{"class":78},"@lines = (\u003C$SOURCE>);\n",[68,109,111,114],{"class":70,"line":110},4,[68,112,113],{"class":85},"close",[68,115,116],{"class":78},"($SOURCE);\n",[39,118,119],{},"It makes sure the variable containing the file name is properly defined, but it does nothing else to catch errors. Consequently, any error, such as the file not existing, being unreadable, or containing too much data to read into memory, will cause the program to abort.",[46,121,123],{"id":122},"compliant-solution","Compliant Solution",[39,125,126],{},"This compliant solution does the same thing but provides useful error messages if anything goes wrong.",[54,128,130],{"quality":129},"good",[58,131,133],{"className":60,"code":132,"language":62,"meta":63,"style":63},"my $source;\nopen(my $SOURCE, \"\u003C\", $source) or croak \"error opening $source: $!\";\n@lines = (\u003C$SOURCE>);\nclose($SOURCE) or croak \"error closing $source: $!\";\n",[65,134,135,141,180,184],{"__ignoreMap":63},[68,136,137,139],{"class":70,"line":71},[68,138,75],{"class":74},[68,140,79],{"class":78},[68,142,143,145,147,149,151,153,156,159,162,165,168,171,174,177],{"class":70,"line":82},[68,144,86],{"class":85},[68,146,89],{"class":78},[68,148,75],{"class":74},[68,150,94],{"class":78},[68,152,98],{"class":97},[68,154,155],{"class":78},", $source) ",[68,157,158],{"class":74},"or",[68,160,161],{"class":78}," croak ",[68,163,164],{"class":97},"\"error opening ",[68,166,167],{"class":78},"$source",[68,169,170],{"class":97},": ",[68,172,173],{"class":78},"$!",[68,175,176],{"class":97},"\"",[68,178,179],{"class":78},";\n",[68,181,182],{"class":70,"line":104},[68,183,107],{"class":78},[68,185,186,188,191,193,195,198,200,202,204,206],{"class":70,"line":110},[68,187,113],{"class":85},[68,189,190],{"class":78},"($SOURCE) ",[68,192,158],{"class":74},[68,194,161],{"class":78},[68,196,197],{"class":97},"\"error closing ",[68,199,167],{"class":78},[68,201,170],{"class":97},[68,203,173],{"class":78},[68,205,176],{"class":97},[68,207,179],{"class":78},[39,209,210,211,214,215,217,218,221,222,225,226,229],{},"If any error occurs, the program calls the ",[65,212,213],{},"croak()"," function, passing it a string that includes both the source file being opened and the ",[65,216,173],{}," variable, which contains a system error string based on the value of ",[65,219,220],{},"errno"," , which is set to a useful value when the ",[65,223,224],{},"open(2)"," or ",[65,227,228],{},"close(2)"," functions fail.",[46,231,233],{"id":232},"exceptions","Exceptions",[39,235,236,240],{},[237,238,239],"strong",{},"EXP32:EX0:"," If the return value is inconsequential or if any errors can be safely ignored, such as for functions called because of their side effects, the function's return value may be silently discarded.",[39,242,243,246,247,250,251,253],{},[237,244,245],{},"EXP32:EX1:"," The ",[65,248,249],{},"autodie"," module is designed to replace functions that return a value indicating failure with functions that throw an exception on failure. When ",[65,252,249],{}," is in use, any functions it redefines may be safely ignored.",[54,255,256],{"quality":129},[58,257,259],{"className":60,"code":258,"language":62,"meta":63,"style":63},"use autodie;\n\nmy $source;\nopen(my $SOURCE, \"\u003C\", $source);\n@lines = (\u003C$SOURCE>);\nclose($SOURCE);\n",[65,260,261,269,274,280,294,299],{"__ignoreMap":63},[68,262,263,266],{"class":70,"line":71},[68,264,265],{"class":74},"use",[68,267,268],{"class":78}," autodie;\n",[68,270,271],{"class":70,"line":82},[68,272,273],{"emptyLinePlaceholder":7},"\n",[68,275,276,278],{"class":70,"line":104},[68,277,75],{"class":74},[68,279,79],{"class":78},[68,281,282,284,286,288,290,292],{"class":70,"line":110},[68,283,86],{"class":85},[68,285,89],{"class":78},[68,287,75],{"class":74},[68,289,94],{"class":78},[68,291,98],{"class":97},[68,293,101],{"class":78},[68,295,297],{"class":70,"line":296},5,[68,298,107],{"class":78},[68,300,302,304],{"class":70,"line":301},6,[68,303,113],{"class":85},[68,305,116],{"class":78},[39,307,308,311,312,315,316,319,320,225,323,326],{},[237,309,310],{},"EXP32:EX2:"," Functions that send data to standard output or standard error need not have their return values checked. This includes ",[65,313,314],{},"print"," and ",[65,317,318],{},"printf"," , but only if their file handle argument is not supplied or is explicitly set to ",[65,321,322],{},"*STDOUT",[65,324,325],{},"*STDERR"," . If they send their output to any other file handle, their return value must be checked.",[39,328,329,332,333,336],{},[237,330,331],{},"EXP32:EX3:"," When inside error-handling code, function calls that are used to release resources, such as ",[65,334,335],{},"close()"," , need not have their return values checked. Any code that falls under this exception should be explicitly documented as such.",[46,338,340],{"id":339},"risk-assessment","Risk Assessment",[39,342,343],{},"Failure to handle error codes or other values returned by functions can lead to incorrect program flow and violations of data integrity.",[345,346,347,348,347,378],"table",{},"\n  ",[349,350,351,352,347],"thead",{},"\n    ",[353,354,355,356,355,360,355,363,355,366,355,369,355,372,355,375,351],"tr",{},"\n      ",[357,358,359],"th",{},"Rule",[357,361,362],{},"Severity",[357,364,365],{},"Likelihood",[357,367,368],{},"Detectable",[357,370,371],{},"Repairable",[357,373,374],{},"Priority",[357,376,377],{},"Level",[379,380,351,381,347],"tbody",{},[353,382,355,383,355,387,355,390,355,393,355,396,355,398,355,405,351],{},[384,385,386],"td",{},"EXP32-PL",[384,388,389],{},"Medium",[384,391,392],{},"Probable",[384,394,395],{},"No",[384,397,395],{},[384,399,401],{"style":400},"color: #27ae60;",[402,403,404],"b",{},"P4",[384,406,407],{"style":400},[402,408,409],{},"L3",[46,411,413],{"id":412},"automated-detection","Automated Detection",[345,415,418,431],{"className":416},[417],"wrapped",[419,420,421,425,427,429],"colgroup",{},[422,423],"col",{"style":424},"width: 25%",[422,426],{"style":424},[422,428],{"style":424},[422,430],{"style":424},[379,432,433,453,480],{},[353,434,437,442,445,450],{"className":435},[436],"header",[357,438,439],{},[39,440,441],{},"Tool",[357,443,444],{},"Version",[357,446,447],{},[39,448,449],{},"Checker",[357,451,452],{},"Description",[353,454,457,462,465,477],{"className":455},[456],"odd",[384,458,459],{},[39,460,461],{},"Perl::Critic",[384,463,464],{},"5.0",[384,466,467],{},[39,468,469,470,473,474,476],{},"InputOutput::RequireCheckedClose",[471,472],"br",{},"\nInputOutput::RequireCheckedOpen",[471,475],{},"\nInputOutput::RequireCheckedSyscalls",[384,478,479],{},"Implemented",[353,481,484,493,500,505],{"className":482},[483],"even",[384,485,486],{},[39,487,488],{},[489,490,492],"a",{"href":491},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[384,494,495],{},[496,497],"div",{"className":498},[499],"content-wrapper",[384,501,502],{},[39,503,504],{},"PERL_D89",[384,506,507],{},"Fully implemented",[46,509,511],{"id":510},"related-guidelines","Related Guidelines",[345,513,514,522],{},[349,515,516],{},[353,517,518,520],{},[357,519],{},[357,521],{},[379,523,524,537,550],{},[353,525,526,531],{},[384,527,528],{},[489,529,530],{"href":17},"SEI CERT C Coding Standard",[384,532,533],{},[489,534,536],{"href":535},"\u002Fsei-cert-c-coding-standard\u002Frecommendations\u002Fexpressions-exp\u002Fexp12-c","EXP12-C. Do not ignore values returned by functions",[353,538,539,544],{},[384,540,541],{},[489,542,543],{"href":20},"SEI CERT C++ Coding Standard",[384,545,546],{},[489,547,549],{"href":548},"\u002Fsei-cert-cpp-coding-standard\u002Fthe-void\u002Fvoid-3-recommendations\u002Fvoid-rec-02-expressions-exp\u002Fvoid-exp12-cpp-do-not-ignore-values-returned-by-functions-or-methods","VOID EXP12-CPP. Do not ignore values returned by functions or methods",[353,551,552,557],{},[384,553,554],{},[489,555,556],{"href":23},"CERT Oracle Secure Coding Standard for Java",[384,558,559],{},[489,560,562],{"href":561},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Fexpressions-exp\u002Fexp00-j","EXP00-J. Do not ignore values returned by methods",[46,564,566],{"id":565},"bibliography","Bibliography",[345,568,569,577],{},[349,570,571],{},[353,572,573,575],{},[357,574],{},[357,576],{},[379,578,579,592,607],{},[353,580,581,589],{},[384,582,583,584,588],{},"[ ",[489,585,587],{"href":586},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway05","Conway 2005"," ]",[384,590,591],{},"\"Error Checking,\" p. 208",[353,593,594,600],{},[384,595,583,596,588],{},[489,597,599],{"href":598},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-CPAN","CPAN",[384,601,602],{},[489,603,249],{"href":604,"rel":605},"http:\u002F\u002Fsearch.cpan.org\u002F%7Epjf\u002Fautodie-2.10\u002Flib\u002Fautodie.pm",[606],"nofollow",[353,608,609,615],{},[384,610,583,611,588],{},[489,612,614],{"href":613},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-OpenGroup08","Open Group 2008",[384,616,617],{},[489,618,621],{"href":619,"rel":620},"http:\u002F\u002Fwww.opengroup.org\u002Fonlinepubs\u002F000095399\u002Ffunctions\u002Fopen.html",[606],[65,622,623],{},"open()",[39,625,626,633,634,633,640],{},[489,627,629],{"href":628},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl",[630,631],"img",{"src":632},"\u002Fattachments\u002F88890562\u002F88892207.png"," ",[489,635,637],{"href":636},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002F",[630,638],{"src":639},"\u002Fattachments\u002F88890562\u002F88892209.png",[489,641,643],{"href":642},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp33-pl",[630,644],{"src":645},"\u002Fattachments\u002F88890562\u002F88892208.png",[647,648,649],"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 .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 .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":63,"searchDepth":82,"depth":82,"links":651},[652,653,654,655,656,657,658],{"id":48,"depth":82,"text":49},{"id":122,"depth":82,"text":123},{"id":232,"depth":82,"text":233},{"id":339,"depth":82,"text":340},{"id":412,"depth":82,"text":413},{"id":510,"depth":82,"text":511},{"id":565,"depth":82,"text":566},"md",{"tags":661},[662,663],"exp","rule","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp32-pl",{"title":30,"description":41},"7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F4.exp32-pl","KKQmFFt1uAfYRxdxsRv6rIXmR5PA1aG3xI0e51qaQ24",[669,672],{"title":670,"path":628,"stem":671,"children":-1},"EXP31-PL. Do not suppress or ignore exceptions","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl",{"title":673,"path":642,"stem":674,"children":-1},"EXP33-PL. Do not invoke a function in a context for which it is not defined","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F5.exp33-pl",[676],{"title":677,"path":678,"stem":679,"children":680},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[681,682,737,860,1008],{"title":677,"path":678,"stem":679},{"title":683,"path":684,"stem":685,"children":686},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[687,688,692],{"title":683,"path":684,"stem":685},{"title":689,"path":690,"stem":691},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":693,"path":694,"stem":695,"children":696},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[697,698,702,706,710,714,718,722,725,729,733],{"title":693,"path":694,"stem":695},{"title":699,"path":700,"stem":701},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":703,"path":704,"stem":705},"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":707,"path":708,"stem":709},"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":711,"path":712,"stem":713},"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":715,"path":716,"stem":717},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":719,"path":720,"stem":721},"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":340,"path":723,"stem":724},"\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":726,"path":727,"stem":728},"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":730,"path":731,"stem":732},"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":734,"path":735,"stem":736},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":738,"path":739,"stem":740,"children":741},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[742,743,761,778,788,818,822,836,846],{"title":738,"path":739,"stem":740},{"title":744,"path":745,"stem":746,"children":747},"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",[748,749,753,757],{"title":744,"path":745,"stem":746},{"title":750,"path":751,"stem":752},"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":754,"path":755,"stem":756},"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":758,"path":759,"stem":760},"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":762,"path":763,"stem":764,"children":765},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[766,767,771,772,773,774],{"title":762,"path":763,"stem":764},{"title":768,"path":769,"stem":770},"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":670,"path":628,"stem":671},{"title":30,"path":664,"stem":666},{"title":673,"path":642,"stem":674},{"title":775,"path":776,"stem":777},"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":779,"path":780,"stem":781,"children":782},"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",[783,784],{"title":779,"path":780,"stem":781},{"title":785,"path":786,"stem":787},"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":789,"path":790,"stem":791,"children":792},"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",[793,794,798,802,806,810,814],{"title":789,"path":790,"stem":791},{"title":795,"path":796,"stem":797},"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":799,"path":800,"stem":801},"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":803,"path":804,"stem":805},"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":807,"path":808,"stem":809},"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":811,"path":812,"stem":813},"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":815,"path":816,"stem":817},"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":819,"path":820,"stem":821},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":823,"path":824,"stem":825,"children":826},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[827,828,832],{"title":823,"path":824,"stem":825},{"title":829,"path":830,"stem":831},"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":833,"path":834,"stem":835},"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":837,"path":838,"stem":839,"children":840},"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",[841,842],{"title":837,"path":838,"stem":839},{"title":843,"path":844,"stem":845},"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":847,"path":848,"stem":849,"children":850},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[851,852,856],{"title":847,"path":848,"stem":849},{"title":853,"path":854,"stem":855},"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":857,"path":858,"stem":859},"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":861,"path":862,"stem":863,"children":864},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[865,866,895,928,941,954,967,992,1005],{"title":861,"path":862,"stem":863},{"title":744,"path":867,"stem":868,"children":869},"\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",[870,871,875,879,883,887,891],{"title":744,"path":867,"stem":868},{"title":872,"path":873,"stem":874},"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":876,"path":877,"stem":878},"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":880,"path":881,"stem":882},"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":884,"path":885,"stem":886},"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":888,"path":889,"stem":890},"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":892,"path":893,"stem":894},"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":762,"path":896,"stem":897,"children":898},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[899,900,904,908,912,916,920,924],{"title":762,"path":896,"stem":897},{"title":901,"path":902,"stem":903},"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":905,"path":906,"stem":907},"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":909,"path":910,"stem":911},"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":913,"path":914,"stem":915},"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":917,"path":918,"stem":919},"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":921,"path":922,"stem":923},"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":925,"path":926,"stem":927},"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":779,"path":929,"stem":930,"children":931},"\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",[932,933,937],{"title":779,"path":929,"stem":930},{"title":934,"path":935,"stem":936},"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":938,"path":939,"stem":940},"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":789,"path":942,"stem":943,"children":944},"\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",[945,946,950],{"title":789,"path":942,"stem":943},{"title":947,"path":948,"stem":949},"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":951,"path":952,"stem":953},"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":819,"path":955,"stem":956,"children":957},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[958,959,963],{"title":819,"path":955,"stem":956},{"title":960,"path":961,"stem":962},"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":964,"path":965,"stem":966},"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":823,"path":968,"stem":969,"children":970},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[971,972,976,980,984,988],{"title":823,"path":968,"stem":969},{"title":973,"path":974,"stem":975},"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":977,"path":978,"stem":979},"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":981,"path":982,"stem":983},"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":985,"path":986,"stem":987},"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":989,"path":990,"stem":991},"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":837,"path":993,"stem":994,"children":995},"\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",[996,997,1001],{"title":837,"path":993,"stem":994},{"title":998,"path":999,"stem":1000},"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":1002,"path":1003,"stem":1004},"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":847,"path":1006,"stem":1007},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":1009,"path":1010,"stem":1011,"children":1012},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[1013,1014,1018,1046],{"title":1009,"path":1010,"stem":1011},{"title":1015,"path":1016,"stem":1017},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":1019,"path":1020,"stem":1021,"children":1022},"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",[1023,1024,1028,1032,1036,1040,1042],{"title":1019,"path":1020,"stem":1021},{"title":1025,"path":1026,"stem":1027},"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":1029,"path":1030,"stem":1031},"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":1033,"path":1034,"stem":1035},"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":1037,"path":1038,"stem":1039},"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":492,"path":491,"stem":1041},"7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":1043,"path":1044,"stem":1045},"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":1047,"path":1048,"stem":1049},"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",1775657794017]