[{"data":1,"prerenderedAt":1117},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl":734,"sidebar-sei-cert-perl-coding-standard":742},[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":725,"meta":726,"navigation":7,"path":730,"seo":731,"stem":732,"__hash__":733},"content\u002F7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F2.exp30-pl.md","EXP30-PL. Do not use deprecated or obsolete functions or modules",{"type":32,"value":33,"toc":714},"minimark",[34,38,42,45,124,127,157,165,171,239,245,252,261,318,336,340,357,373,385,390,400,404,407,468,472,558,562,600,604,687,690,710],[35,36,30],"h1",{"id":37},"exp30-pl-do-not-use-deprecated-or-obsolete-functions-or-modules",[39,40,41],"p",{},"Do not use deprecated or obsolescent functions when more secure equivalent functions are available.",[39,43,44],{},"Here is a list of deprecated functions along with their recommended alternatives if available:",[46,47,48,59],"table",{},[49,50,51],"thead",{},[52,53,54,57],"tr",{},[55,56],"th",{},[55,58],{},[60,61,62,71,84,96,108],"tbody",{},[52,63,64,68],{},[65,66,67],"td",{},"Deprecated",[65,69,70],{},"Preferred",[52,72,73,79],{},[65,74,75],{},[76,77,78],"code",{},"die()",[65,80,81],{},[76,82,83],{},"Carp::croak()",[52,85,86,91],{},[65,87,88],{},[76,89,90],{},"warn()",[65,92,93],{},[76,94,95],{},"Carp::carp()",[52,97,98,103],{},[65,99,100],{},[76,101,102],{},"-t",[65,104,105],{},[76,106,107],{},"IO::Interactive",[52,109,110,115],{},[65,111,112],{},[76,113,114],{},"format()",[65,116,117,120,121],{},[76,118,119],{},"Template"," , ",[76,122,123],{},"Perl6::Form",[39,125,126],{},"The following modules are also deprecated:",[46,128,129,137],{},[49,130,131],{},[52,132,133,135],{},[55,134],{},[55,136],{},[60,138,139,145],{},[52,140,141,143],{},[65,142,67],{},[65,144,70],{},[52,146,147,152],{},[65,148,149],{},[76,150,151],{},"base",[65,153,154],{},[76,155,156],{},"parent",[158,159,161,162,164],"h2",{"id":160},"noncompliant-code-example-die","Noncompliant Code Example ( ",[76,163,78],{}," )",[39,166,167,168,170],{},"This noncompliant code example tries to open a file and invokes the obsolete ",[76,169,78],{}," method if it fails.",[172,173,175],"code-block",{"quality":174},"bad",[176,177,182],"pre",{"className":178,"code":179,"language":180,"meta":181,"style":181},"language-perl shiki shiki-themes github-light github-dark monokai","my $file;\nopen(FILE, \"\u003C\", $file) or die \"error opening $file: stopped\";\n# work with FILE\n","perl","",[76,183,184,197,232],{"__ignoreMap":181},[185,186,189,193],"span",{"class":187,"line":188},"line",1,[185,190,192],{"class":191},"sC2Qs","my",[185,194,196],{"class":195},"sMOD_"," $file;\n",[185,198,200,204,207,211,214,217,220,223,226,229],{"class":187,"line":199},2,[185,201,203],{"class":202},"sTrkL","open",[185,205,206],{"class":195},"(FILE, ",[185,208,210],{"class":209},"sstjo","\"\u003C\"",[185,212,213],{"class":195},", $file) ",[185,215,216],{"class":191},"or",[185,218,219],{"class":191}," die",[185,221,222],{"class":209}," \"error opening ",[185,224,225],{"class":195},"$file",[185,227,228],{"class":209},": stopped\"",[185,230,231],{"class":195},";\n",[185,233,235],{"class":187,"line":234},3,[185,236,238],{"class":237},"s8-w5","# work with FILE\n",[39,240,241,242,244],{},"The ",[76,243,78],{}," method is considered deprecated because it prints the file name and line number in which it was invoked. This information might be sensitive.",[158,246,248,249,164],{"id":247},"compliant-solution-croak","Compliant Solution ( ",[76,250,251],{},"croak()",[39,253,254,255,257,258,260],{},"This compliant solution uses the ",[76,256,251],{}," function instead of ",[76,259,78],{}," .",[172,262,264],{"quality":263},"good",[176,265,267],{"className":178,"code":266,"language":180,"meta":181,"style":181},"use Carp;\n\nmy $file;\nopen(FILE, \"\u003C\", $file) or croak \"error opening $file: stopped\";\n# work with FILE\n",[76,268,269,277,282,288,313],{"__ignoreMap":181},[185,270,271,274],{"class":187,"line":188},[185,272,273],{"class":191},"use",[185,275,276],{"class":195}," Carp;\n",[185,278,279],{"class":187,"line":199},[185,280,281],{"emptyLinePlaceholder":7},"\n",[185,283,284,286],{"class":187,"line":234},[185,285,192],{"class":191},[185,287,196],{"class":195},[185,289,291,293,295,297,299,301,304,307,309,311],{"class":187,"line":290},4,[185,292,203],{"class":202},[185,294,206],{"class":195},[185,296,210],{"class":209},[185,298,213],{"class":195},[185,300,216],{"class":191},[185,302,303],{"class":195}," croak ",[185,305,306],{"class":209},"\"error opening ",[185,308,225],{"class":195},[185,310,228],{"class":209},[185,312,231],{"class":195},[185,314,316],{"class":187,"line":315},5,[185,317,238],{"class":237},[39,319,320,321,120,323,325,326,328,329,331,332,335],{},"Unlike ",[76,322,78],{},[76,324,251],{}," provides the file name and line number of the function that invoked the function that invoked ",[76,327,251],{}," . This solution is more useful for application code that invokes library code; in this case, ",[76,330,251],{}," and ",[76,333,334],{},"carp()"," also will reveal the file name and line number of the application code rather than the library code.",[158,337,339],{"id":338},"exceptions","Exceptions",[39,341,342,346,347,349,350,353,354,260],{},[343,344,345],"strong",{},"EXP30:EX0"," : The ",[76,348,102],{}," function should not be used for determining if input is interactive, but it is perfectly valid to determine if output is interactive. So it may be used on ",[76,351,352],{},"*STDOUT"," or ",[76,355,356],{},"*STDERR",[39,358,359,362,363,331,365,367,368,331,370,372],{},[343,360,361],{},"EXP30:EX1"," : There are several instances when ",[76,364,78],{},[76,366,90],{}," are preferred over ",[76,369,334],{},[76,371,251],{}," :",[374,375,376],"ul",{},[377,378,379,380,331,382,384],"li",{},"Inside a signal handler because the behavior of ",[76,381,251],{},[76,383,334],{}," functions when invoked inside a signal handler are not documented.",[374,386,387],{},[377,388,389],{},"Outside a subroutine, that is, when used in a small Perl script. In this case, all four functions have no stack trace to indicate their calling location.",[374,391,392],{},[377,393,394,395,353,397,399],{},"If the string given to ",[76,396,78],{},[76,398,90],{}," ends with a newline, then these functions do not provide any file name or line number information. Consequently, they may be invoked if given a string literal that clearly ends with a newline (and the developer clearly does not wish to reveal file name or line number information).",[158,401,403],{"id":402},"risk-assessment","Risk Assessment",[39,405,406],{},"Using deprecated or obsolete classes or methods in program code can lead to erroneous behavior.",[46,408,409,410,409,437],{},"\n  ",[49,411,412,413,409],{},"\n    ",[52,414,415,416,415,419,415,422,415,425,415,428,415,431,415,434,412],{},"\n      ",[55,417,418],{},"Rule",[55,420,421],{},"Severity",[55,423,424],{},"Likelihood",[55,426,427],{},"Detectable",[55,429,430],{},"Repairable",[55,432,433],{},"Priority",[55,435,436],{},"Level",[60,438,412,439,409],{},[52,440,415,441,415,444,415,447,415,450,415,453,415,456,415,463,412],{},[65,442,443],{},"EXP30-PL",[65,445,446],{},"Medium",[65,448,449],{},"Probable",[65,451,452],{},"Yes",[65,454,455],{},"No",[65,457,459],{"style":458},"color: #f1c40f;",[460,461,462],"b",{},"P8",[65,464,465],{"style":458},[460,466,467],{},"L2",[158,469,471],{"id":470},"automated-detection","Automated Detection",[46,473,476,485],{"className":474},[475],"wrapped",[477,478,479,483],"colgroup",{},[480,481],"col",{"style":482},"width: 50%",[480,484],{"style":482},[60,486,487,501,524,533,541],{},[52,488,491,496],{"className":489},[490],"header",[55,492,493],{},[39,494,495],{},"Tool",[55,497,498],{},[39,499,500],{},"Diagnostic",[52,502,505,519],{"className":503},[504],"odd",[65,506,507,510,515],{"rowSpan":234},[39,508,509],{},"Perl::Critic",[39,511,512],{},[513,514],"br",{},[39,516,517],{},[513,518],{},[65,520,521],{},[39,522,523],{},"ErrorHandling::RequireCarping",[52,525,528],{"className":526},[527],"even",[65,529,530],{},[39,531,532],{},"InputOutput::ProhibitInteractiveTest",[52,534,536],{"className":535},[504],[65,537,538],{},[39,539,540],{},"Miscellanea::ProhibitFormats",[52,542,544,553],{"className":543},[527],[65,545,546],{},[39,547,548],{},[549,550,552],"a",{"href":551},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[65,554,555],{},[39,556,557],{},"PERL_S37",[158,559,561],{"id":560},"related-guidelines","Related Guidelines",[46,563,564,572],{},[49,565,566],{},[52,567,568,570],{},[55,569],{},[55,571],{},[60,573,574,587],{},[52,575,576,581],{},[65,577,578],{},[549,579,580],{"href":17},"SEI CERT C Coding Standard",[65,582,583],{},[549,584,586],{"href":585},"\u002Fsei-cert-c-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc24-c","MSC24-C. Do not use deprecated or obsolescent functions",[52,588,589,594],{},[65,590,591],{},[549,592,593],{"href":23},"CERT Oracle Secure Coding Standard for Java",[65,595,596],{},[549,597,599],{"href":598},"\u002Fsei-cert-oracle-coding-standard-for-java\u002Frules\u002Fmethods-met\u002Fmet02-j","MET02-J. Do not use deprecated or obsolete classes or methods",[158,601,603],{"id":602},"bibliography","Bibliography",[46,605,607,613],{"className":606},[475],[477,608,609,611],{},[480,610],{"style":482},[480,612],{"style":482},[60,614,615,630,661,674],{},[52,616,618,626],{"className":617},[504],[55,619,620,621,625],{},"[ ",[549,622,624],{"href":623},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway2005","Conway 2005"," ]",[55,627,628],{},[513,629],{},[52,631,633,641],{"className":632},[527],[55,634,620,637,625],{"className":635},[636],"nohighlight",[549,638,640],{"href":639},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-CPAN","CPAN",[55,642,644,648,649,120,653,120,657],{"className":643},[636],[549,645,647],{"href":646},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002F","Elliot Shank, Perl-Critic-1.116"," ",[549,650,652],{"href":651},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FErrorHandling\u002FRequireCarping.pm","RequireCarping",[549,654,656],{"href":655},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FInputOutput\u002FProhibitInteractiveTest.pm","InteractiveTest",[549,658,660],{"href":659},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FMiscellanea\u002FProhibitFormats.pm","ProhibitFormats",[52,662,664,668],{"className":663},[504],[55,665,620,666,625],{},[549,667,640],{"href":639},[55,669,670,671],{},"Chris Dolan, ",[549,672,151],{"href":673},"http:\u002F\u002Fsearch.cpan.org\u002F%7Ergarcia\u002Fbase-2.18\u002Flib\u002Fbase.pm",[52,675,677,681],{"className":676},[527],[55,678,620,679,625],{},[549,680,640],{"href":639},[55,682,683,684],{},"Max Maischein, ",[549,685,156],{"href":686},"http:\u002F\u002Fsearch.cpan.org\u002F%7Ecorion\u002Fparent-0.225\u002Flib\u002Fparent.pm",[688,689],"hr",{},[39,691,692,648,699,648,704],{},[549,693,695],{"href":694},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002F",[696,697],"img",{"src":698},"\u002Fattachments\u002F88890562\u002F88892207.png",[549,700,701],{"href":694},[696,702],{"src":703},"\u002Fattachments\u002F88890562\u002F88892209.png",[549,705,707],{"href":706},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp31-pl",[696,708],{"src":709},"\u002Fattachments\u002F88890562\u002F88892208.png",[711,712,713],"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 pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}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":181,"searchDepth":199,"depth":199,"links":715},[716,718,720,721,722,723,724],{"id":160,"depth":199,"text":717},"Noncompliant Code Example ( die() )",{"id":247,"depth":199,"text":719},"Compliant Solution ( croak() )",{"id":338,"depth":199,"text":339},{"id":402,"depth":199,"text":403},{"id":470,"depth":199,"text":471},{"id":560,"depth":199,"text":561},{"id":602,"depth":199,"text":603},"md",{"tags":727},[728,729],"exp","rule","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp30-pl",{"title":30,"description":41},"7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F2.exp30-pl","rsgXlHWQdg8YXHatnIUIMIpH0hJlKtssmjlmhCAtxzU",[735,739],{"title":736,"path":737,"stem":738,"children":-1},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",{"title":740,"path":706,"stem":741,"children":-1},"EXP31-PL. Do not suppress or ignore exceptions","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F3.exp31-pl",[743],{"title":744,"path":745,"stem":746,"children":747},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[748,749,804,927,1075],{"title":744,"path":745,"stem":746},{"title":750,"path":751,"stem":752,"children":753},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[754,755,759],{"title":750,"path":751,"stem":752},{"title":756,"path":757,"stem":758},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":760,"path":761,"stem":762,"children":763},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[764,765,769,773,777,781,785,789,792,796,800],{"title":760,"path":761,"stem":762},{"title":766,"path":767,"stem":768},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":770,"path":771,"stem":772},"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":774,"path":775,"stem":776},"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":778,"path":779,"stem":780},"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":782,"path":783,"stem":784},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":786,"path":787,"stem":788},"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":403,"path":790,"stem":791},"\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":793,"path":794,"stem":795},"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":797,"path":798,"stem":799},"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":801,"path":802,"stem":803},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":805,"path":806,"stem":807,"children":808},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[809,810,828,845,855,885,889,903,913],{"title":805,"path":806,"stem":807},{"title":811,"path":812,"stem":813,"children":814},"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",[815,816,820,824],{"title":811,"path":812,"stem":813},{"title":817,"path":818,"stem":819},"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":821,"path":822,"stem":823},"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":825,"path":826,"stem":827},"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":736,"path":737,"stem":738,"children":829},[830,831,832,833,837,841],{"title":736,"path":737,"stem":738},{"title":30,"path":730,"stem":732},{"title":740,"path":706,"stem":741},{"title":834,"path":835,"stem":836},"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":838,"path":839,"stem":840},"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":842,"path":843,"stem":844},"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":846,"path":847,"stem":848,"children":849},"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",[850,851],{"title":846,"path":847,"stem":848},{"title":852,"path":853,"stem":854},"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":856,"path":857,"stem":858,"children":859},"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",[860,861,865,869,873,877,881],{"title":856,"path":857,"stem":858},{"title":862,"path":863,"stem":864},"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":866,"path":867,"stem":868},"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":870,"path":871,"stem":872},"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":874,"path":875,"stem":876},"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":878,"path":879,"stem":880},"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":882,"path":883,"stem":884},"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":886,"path":887,"stem":888},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":890,"path":891,"stem":892,"children":893},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[894,895,899],{"title":890,"path":891,"stem":892},{"title":896,"path":897,"stem":898},"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":900,"path":901,"stem":902},"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":904,"path":905,"stem":906,"children":907},"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",[908,909],{"title":904,"path":905,"stem":906},{"title":910,"path":911,"stem":912},"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":914,"path":915,"stem":916,"children":917},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[918,919,923],{"title":914,"path":915,"stem":916},{"title":920,"path":921,"stem":922},"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":924,"path":925,"stem":926},"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":928,"path":929,"stem":930,"children":931},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[932,933,962,995,1008,1021,1034,1059,1072],{"title":928,"path":929,"stem":930},{"title":811,"path":934,"stem":935,"children":936},"\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",[937,938,942,946,950,954,958],{"title":811,"path":934,"stem":935},{"title":939,"path":940,"stem":941},"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":943,"path":944,"stem":945},"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":947,"path":948,"stem":949},"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":951,"path":952,"stem":953},"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":955,"path":956,"stem":957},"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":959,"path":960,"stem":961},"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":736,"path":963,"stem":964,"children":965},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[966,967,971,975,979,983,987,991],{"title":736,"path":963,"stem":964},{"title":968,"path":969,"stem":970},"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":972,"path":973,"stem":974},"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":976,"path":977,"stem":978},"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":980,"path":981,"stem":982},"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":984,"path":985,"stem":986},"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":988,"path":989,"stem":990},"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":992,"path":993,"stem":994},"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":846,"path":996,"stem":997,"children":998},"\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",[999,1000,1004],{"title":846,"path":996,"stem":997},{"title":1001,"path":1002,"stem":1003},"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":1005,"path":1006,"stem":1007},"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":856,"path":1009,"stem":1010,"children":1011},"\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",[1012,1013,1017],{"title":856,"path":1009,"stem":1010},{"title":1014,"path":1015,"stem":1016},"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":1018,"path":1019,"stem":1020},"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":886,"path":1022,"stem":1023,"children":1024},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[1025,1026,1030],{"title":886,"path":1022,"stem":1023},{"title":1027,"path":1028,"stem":1029},"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":1031,"path":1032,"stem":1033},"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":890,"path":1035,"stem":1036,"children":1037},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[1038,1039,1043,1047,1051,1055],{"title":890,"path":1035,"stem":1036},{"title":1040,"path":1041,"stem":1042},"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":1044,"path":1045,"stem":1046},"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":1048,"path":1049,"stem":1050},"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":1052,"path":1053,"stem":1054},"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":1056,"path":1057,"stem":1058},"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":904,"path":1060,"stem":1061,"children":1062},"\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",[1063,1064,1068],{"title":904,"path":1060,"stem":1061},{"title":1065,"path":1066,"stem":1067},"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":1069,"path":1070,"stem":1071},"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":914,"path":1073,"stem":1074},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":1076,"path":1077,"stem":1078,"children":1079},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[1080,1081,1085,1113],{"title":1076,"path":1077,"stem":1078},{"title":1082,"path":1083,"stem":1084},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":1086,"path":1087,"stem":1088,"children":1089},"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",[1090,1091,1095,1099,1103,1107,1109],{"title":1086,"path":1087,"stem":1088},{"title":1092,"path":1093,"stem":1094},"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":1096,"path":1097,"stem":1098},"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":1100,"path":1101,"stem":1102},"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":1104,"path":1105,"stem":1106},"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":552,"path":551,"stem":1108},"7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":1110,"path":1111,"stem":1112},"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":1114,"path":1115,"stem":1116},"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",1775657793718]