[{"data":1,"prerenderedAt":1281},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop01-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop01-pl":896,"sidebar-sei-cert-perl-coding-standard":905},[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":886,"extension":887,"meta":888,"navigation":7,"path":892,"seo":893,"stem":894,"__hash__":895},"content\u002F7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F3.oop01-pl.md","OOP01-PL. Do not access private variables or subroutines in other packages",{"type":32,"value":33,"toc":878},"minimark",[34,38,47,60,65,72,483,493,497,500,611,615,622,638,642,645,710,714,771,775,851,854,874],[35,36,30],"h1",{"id":37},"oop01-pl-do-not-access-private-variables-or-subroutines-in-other-packages",[39,40,41,42,46],"p",{},"Perl provides no mechanism to hide variables or functions. Although it provides mechanisms such as ",[43,44,45],"code",{},"my()"," that limit the scope of variables, it does nothing to prevent code from accessing any variable or method that is available and dereferenceable from its current scope.",[39,48,49,50,53,54,59],{},"By convention, packages may indicate that a method or variable is not to be used outside the class by prefixing the method or variable name with an underscore ( ",[43,51,52],{},"_"," ) [ ",[55,56,58],"a",{"href":57},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway05","Conway 2005"," ]. Perl provides no inherent enforcement of this convention; however, it is followed by many modules in CPAN and other developers. This convention must not be violated.",[61,62,64],"h2",{"id":63},"noncompliant-code-example","Noncompliant Code Example",[39,66,67,68,71],{},"This noncompliant code example provides a ",[43,69,70],{},"Car"," package that registers cars and keeps track of all cars that it creates.",[73,74,76],"code-block",{"quality":75},"bad",[77,78,83],"pre",{"className":79,"code":80,"language":81,"meta":82,"style":82},"language-perl shiki shiki-themes github-light github-dark monokai","{\n  package Car;\n \n  my %_all_cars;\n \n  sub new {\n    my ($class, $type) = @_;\n    my $self = {type=>$type};\n    bless $self, $class;\n    $_all_cars{$self} = 1;\n    return $self;\n  };\n \n  sub DESTROY {\n    delete $_all_cars{shift()};\n  };\n \n  sub type {\n    my $self = shift;\n    return $$self{type};\n  }\n \n  sub _get_all_cars {\n    return %_all_cars;\n  }\n}\n\n\nmy $mine = Car->new(\"Transam\");\nmy $type = $mine->type();\nprint \"I drive a $type.\\n\";\nmy $yours = Car->new(\"Corvette\");\n$type = $yours->type();\nprint \"You drive a $type.\\n\";\n\nmy %cars = Car::_get_all_cars();\nmy @all = keys( %cars);\nmy $count = $#all + 1;\nprint \"There are $count cars on the road.\\n\";\n","perl","",[43,84,85,94,108,114,123,128,142,151,169,179,185,194,200,205,215,230,235,240,250,262,275,281,286,296,303,308,314,320,325,347,360,383,400,410,428,433,441,455,463],{"__ignoreMap":82},[86,87,90],"span",{"class":88,"line":89},"line",1,[86,91,93],{"class":92},"sMOD_","{\n",[86,95,97,101,105],{"class":88,"line":96},2,[86,98,100],{"class":99},"sC2Qs","  package",[86,102,104],{"class":103},"sz2Vg"," Car",[86,106,107],{"class":92},";\n",[86,109,111],{"class":88,"line":110},3,[86,112,113],{"class":92}," \n",[86,115,117,120],{"class":88,"line":116},4,[86,118,119],{"class":99},"  my",[86,121,122],{"class":92}," %_all_cars;\n",[86,124,126],{"class":88,"line":125},5,[86,127,113],{"class":92},[86,129,131,135,139],{"class":88,"line":130},6,[86,132,134],{"class":133},"sq6CD","  sub",[86,136,138],{"class":137},"srTi1"," new",[86,140,141],{"class":92}," {\n",[86,143,145,148],{"class":88,"line":144},7,[86,146,147],{"class":99},"    my",[86,149,150],{"class":92}," ($class, $type) = @_;\n",[86,152,154,156,159,163,166],{"class":88,"line":153},8,[86,155,147],{"class":99},[86,157,158],{"class":92}," $self = {",[86,160,162],{"class":161},"s7F3e","type",[86,164,165],{"class":99},"=>",[86,167,168],{"class":92},"$type};\n",[86,170,172,176],{"class":88,"line":171},9,[86,173,175],{"class":174},"sTrkL","    bless",[86,177,178],{"class":92}," $self, $class;\n",[86,180,182],{"class":88,"line":181},10,[86,183,184],{"class":92},"    $_all_cars{$self} = 1;\n",[86,186,188,191],{"class":88,"line":187},11,[86,189,190],{"class":99},"    return",[86,192,193],{"class":92}," $self;\n",[86,195,197],{"class":88,"line":196},12,[86,198,199],{"class":92},"  };\n",[86,201,203],{"class":88,"line":202},13,[86,204,113],{"class":92},[86,206,208,210,213],{"class":88,"line":207},14,[86,209,134],{"class":133},[86,211,212],{"class":137}," DESTROY",[86,214,141],{"class":92},[86,216,218,221,224,227],{"class":88,"line":217},15,[86,219,220],{"class":174},"    delete",[86,222,223],{"class":92}," $_all_cars{",[86,225,226],{"class":174},"shift",[86,228,229],{"class":92},"()};\n",[86,231,233],{"class":88,"line":232},16,[86,234,199],{"class":92},[86,236,238],{"class":88,"line":237},17,[86,239,113],{"class":92},[86,241,243,245,248],{"class":88,"line":242},18,[86,244,134],{"class":133},[86,246,247],{"class":137}," type",[86,249,141],{"class":92},[86,251,253,255,258,260],{"class":88,"line":252},19,[86,254,147],{"class":99},[86,256,257],{"class":92}," $self = ",[86,259,226],{"class":174},[86,261,107],{"class":92},[86,263,265,267,270,272],{"class":88,"line":264},20,[86,266,190],{"class":99},[86,268,269],{"class":92}," $$self{",[86,271,162],{"class":161},[86,273,274],{"class":92},"};\n",[86,276,278],{"class":88,"line":277},21,[86,279,280],{"class":92},"  }\n",[86,282,284],{"class":88,"line":283},22,[86,285,113],{"class":92},[86,287,289,291,294],{"class":88,"line":288},23,[86,290,134],{"class":133},[86,292,293],{"class":137}," _get_all_cars",[86,295,141],{"class":92},[86,297,299,301],{"class":88,"line":298},24,[86,300,190],{"class":99},[86,302,122],{"class":92},[86,304,306],{"class":88,"line":305},25,[86,307,280],{"class":92},[86,309,311],{"class":88,"line":310},26,[86,312,313],{"class":92},"}\n",[86,315,317],{"class":88,"line":316},27,[86,318,319],{"emptyLinePlaceholder":7},"\n",[86,321,323],{"class":88,"line":322},28,[86,324,319],{"emptyLinePlaceholder":7},[86,326,328,331,334,337,340,344],{"class":88,"line":327},29,[86,329,330],{"class":99},"my",[86,332,333],{"class":92}," $mine = Car",[86,335,336],{"class":99},"->",[86,338,339],{"class":92},"new(",[86,341,343],{"class":342},"sstjo","\"Transam\"",[86,345,346],{"class":92},");\n",[86,348,350,352,355,357],{"class":88,"line":349},30,[86,351,330],{"class":99},[86,353,354],{"class":92}," $type = $mine",[86,356,336],{"class":99},[86,358,359],{"class":92},"type();\n",[86,361,363,366,369,372,375,378,381],{"class":88,"line":362},31,[86,364,365],{"class":174},"print",[86,367,368],{"class":342}," \"I drive a ",[86,370,371],{"class":92},"$type",[86,373,374],{"class":342},".",[86,376,377],{"class":161},"\\n",[86,379,380],{"class":342},"\"",[86,382,107],{"class":92},[86,384,386,388,391,393,395,398],{"class":88,"line":385},32,[86,387,330],{"class":99},[86,389,390],{"class":92}," $yours = Car",[86,392,336],{"class":99},[86,394,339],{"class":92},[86,396,397],{"class":342},"\"Corvette\"",[86,399,346],{"class":92},[86,401,403,406,408],{"class":88,"line":402},33,[86,404,405],{"class":92},"$type = $yours",[86,407,336],{"class":99},[86,409,359],{"class":92},[86,411,413,415,418,420,422,424,426],{"class":88,"line":412},34,[86,414,365],{"class":174},[86,416,417],{"class":342}," \"You drive a ",[86,419,371],{"class":92},[86,421,374],{"class":342},[86,423,377],{"class":161},[86,425,380],{"class":342},[86,427,107],{"class":92},[86,429,431],{"class":88,"line":430},35,[86,432,319],{"emptyLinePlaceholder":7},[86,434,436,438],{"class":88,"line":435},36,[86,437,330],{"class":99},[86,439,440],{"class":92}," %cars = Car::_get_all_cars();\n",[86,442,444,446,449,452],{"class":88,"line":443},37,[86,445,330],{"class":99},[86,447,448],{"class":92}," @all = ",[86,450,451],{"class":174},"keys",[86,453,454],{"class":92},"( %cars);\n",[86,456,458,460],{"class":88,"line":457},38,[86,459,330],{"class":99},[86,461,462],{"class":92}," $count = $#all + 1;\n",[86,464,466,468,471,474,477,479,481],{"class":88,"line":465},39,[86,467,365],{"class":174},[86,469,470],{"class":342}," \"There are ",[86,472,473],{"class":92},"$count",[86,475,476],{"class":342}," cars on the road.",[86,478,377],{"class":161},[86,480,380],{"class":342},[86,482,107],{"class":92},[39,484,485,486,489,490,492],{},"This program behaves as expected, correctly reporting 2 cars on the road. However, it clearly violates encapsulation, because the ",[43,487,488],{},"_get_all_cars()"," method is considered private within the ",[43,491,70],{}," class.",[61,494,496],{"id":495},"compliant-solution","Compliant Solution",[39,498,499],{},"This compliant solution adds a public method and invokes it instead of any private method.",[73,501,503],{"quality":502},"good",[77,504,506],{"className":79,"code":505,"language":81,"meta":82,"style":82},"{\n  package Car;\n\n  my %_all_cars;\n\n  sub count_cars {\n    my @all = keys( %_all_cars);\n    return 1 + $#all;\n  }\n\n  # ... other methods of Car\n}\n\n# ...\nmy $count = Car::count_cars();\nprint \"There are $count cars on the road.\\n\";\n",[43,507,508,512,520,524,530,534,543,554,561,565,569,575,579,583,588,595],{"__ignoreMap":82},[86,509,510],{"class":88,"line":89},[86,511,93],{"class":92},[86,513,514,516,518],{"class":88,"line":96},[86,515,100],{"class":99},[86,517,104],{"class":103},[86,519,107],{"class":92},[86,521,522],{"class":88,"line":110},[86,523,319],{"emptyLinePlaceholder":7},[86,525,526,528],{"class":88,"line":116},[86,527,119],{"class":99},[86,529,122],{"class":92},[86,531,532],{"class":88,"line":125},[86,533,319],{"emptyLinePlaceholder":7},[86,535,536,538,541],{"class":88,"line":130},[86,537,134],{"class":133},[86,539,540],{"class":137}," count_cars",[86,542,141],{"class":92},[86,544,545,547,549,551],{"class":88,"line":144},[86,546,147],{"class":99},[86,548,448],{"class":92},[86,550,451],{"class":174},[86,552,553],{"class":92},"( %_all_cars);\n",[86,555,556,558],{"class":88,"line":153},[86,557,190],{"class":99},[86,559,560],{"class":92}," 1 + $#all;\n",[86,562,563],{"class":88,"line":171},[86,564,280],{"class":92},[86,566,567],{"class":88,"line":181},[86,568,319],{"emptyLinePlaceholder":7},[86,570,571],{"class":88,"line":187},[86,572,574],{"class":573},"s8-w5","  # ... other methods of Car\n",[86,576,577],{"class":88,"line":196},[86,578,313],{"class":92},[86,580,581],{"class":88,"line":202},[86,582,319],{"emptyLinePlaceholder":7},[86,584,585],{"class":88,"line":207},[86,586,587],{"class":573},"# ...\n",[86,589,590,592],{"class":88,"line":217},[86,591,330],{"class":99},[86,593,594],{"class":92}," $count = Car::count_cars();\n",[86,596,597,599,601,603,605,607,609],{"class":88,"line":232},[86,598,365],{"class":174},[86,600,470],{"class":342},[86,602,473],{"class":92},[86,604,476],{"class":342},[86,606,377],{"class":161},[86,608,380],{"class":342},[86,610,107],{"class":92},[61,612,614],{"id":613},"exceptions","Exceptions",[39,616,617,621],{},[618,619,620],"strong",{},"OOP31:EX0"," : A class may access private subroutines in classes it is inherited from.",[39,623,624,627,628,634,635,637],{},[618,625,626],{},"OOP31:EX1"," : This rule does not apply to classes or modules that do not obey this convention. For instance, the ",[55,629,633],{"href":630,"rel":631},"http:\u002F\u002Fsearch.cpan.org\u002F~flora\u002Fperl-5.14.2\u002Fext\u002FPOSIX\u002Flib\u002FPOSIX.pod",[632],"nofollow","POSIX"," package provides an API to the system calls endorsed by the POSIX standard. Many of these calls begin with ",[43,636,52],{}," but are not meant to be private.",[61,639,641],{"id":640},"risk-assessment","Risk Assessment",[39,643,644],{},"Using deprecated or obsolete classes or methods in program code can lead to erroneous behavior.",[646,647,648,667],"table",{},[649,650,651],"thead",{},[652,653,654,657,659,661,663,665],"tr",{},[655,656],"th",{},[655,658],{},[655,660],{},[655,662],{},[655,664],{},[655,666],{},[668,669,670,691],"tbody",{},[652,671,672,676,679,682,685,688],{},[673,674,675],"td",{},"Recommendation",[673,677,678],{},"Severity",[673,680,681],{},"Likelihood",[673,683,684],{},"Remediation Cost",[673,686,687],{},"Priority",[673,689,690],{},"Level",[652,692,693,696,699,702,704,707],{},[673,694,695],{},"OOP01-PL",[673,697,698],{},"Medium",[673,700,701],{},"Probable",[673,703,698],{},[673,705,706],{},"P8",[673,708,709],{},"L2",[61,711,713],{"id":712},"automated-detection","Automated Detection",[646,715,718,727],{"className":716},[717],"wrapped",[719,720,721,725],"colgroup",{},[722,723],"col",{"style":724},"width: 50%",[722,726],{"style":724},[668,728,729,743,762],{},[652,730,733,738],{"className":731},[732],"header",[655,734,735],{},[39,736,737],{},"Tool",[655,739,740],{},[39,741,742],{},"Diagnostic",[652,744,747,757],{"className":745},[746],"odd",[673,748,749,752],{"rowSpan":96},[39,750,751],{},"Perl::Critic",[39,753,754],{},[755,756],"br",{},[673,758,759],{},[39,760,761],{},"Subroutines::ProtectPrivateSubs",[652,763,766],{"className":764},[765],"even",[673,767,768],{},[39,769,770],{},"Variables::ProtectPrivateVars",[61,772,774],{"id":773},"bibliography","Bibliography",[646,776,778,784],{"className":777},[717],[719,779,780,782],{},[722,781],{"style":724},[722,783],{"style":724},[668,785,786,802,825,838],{},[652,787,789,797],{"className":788},[732],[655,790,793,794,796],{"className":791},[792],"nohighlight","[ ",[55,795,58],{"href":57}," ]",[655,798,800],{"className":799},[792],[755,801],{},[652,803,805,811],{"className":804},[746],[673,806,793,807,796],{},[55,808,810],{"href":809},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-CPAN","CPAN",[673,812,813,817,818,821,822],{},[55,814,816],{"href":815},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002F","Elliot Shank, Perl-Critic-1.116"," ",[55,819,761],{"href":820},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FSubroutines\u002FProtectPrivateSubs.pm"," , ",[55,823,770],{"href":824},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FVariables\u002FProtectPrivateVars.pm",[652,826,828,832],{"className":827},[765],[673,829,793,830,796],{},[55,831,810],{"href":809},[673,833,834,835],{},"Ragwitz, Florian, ",[55,836,633],{"href":837},"http:\u002F\u002Fperldoc.perl.org\u002FPOSIX.html",[652,839,841,847],{"className":840},[746],[673,842,793,843,796],{},[55,844,846],{"href":845},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-OpenGroup08","Open Group 2008",[673,848,849],{},[755,850],{},[852,853],"hr",{},[39,855,856,817,863,817,868],{},[55,857,859],{"href":858},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002F",[860,861],"img",{"src":862},"\u002Fattachments\u002F88890562\u002F88892207.png",[55,864,865],{"href":858},[860,866],{"src":867},"\u002Fattachments\u002F88890562\u002F88892209.png",[55,869,871],{"href":870},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop32-pl",[860,872],{"src":873},"\u002Fattachments\u002F88890562\u002F88892208.png",[875,876,877],"style",{},"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 .sz2Vg, html code.shiki .sz2Vg{--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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);}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}",{"title":82,"searchDepth":96,"depth":96,"links":879},[880,881,882,883,884,885],{"id":63,"depth":96,"text":64},{"id":495,"depth":96,"text":496},{"id":613,"depth":96,"text":614},{"id":640,"depth":96,"text":641},{"id":712,"depth":96,"text":713},{"id":773,"depth":96,"text":774},"Perl provides no mechanism to hide variables or functions. Although it provides mechanisms such as my() that limit the scope of variables, it does nothing to prevent code from accessing any variable or method that is available and dereferenceable from its current scope.","md",{"tags":889},[890,891],"recommendation","oop","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002Foop01-pl",{"title":30,"description":886},"7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F8.object-oriented-programming-oop\u002F3.oop01-pl","3V8ema-RyHjRnvvHt05-Np3-uL54Kit4aNvABDH6Z9U",[897,901],{"title":898,"path":899,"stem":900,"children":-1},"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":902,"path":903,"stem":904,"children":-1},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",[906],{"title":907,"path":908,"stem":909,"children":910},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[911,912,967,1097,1237],{"title":907,"path":908,"stem":909},{"title":913,"path":914,"stem":915,"children":916},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[917,918,922],{"title":913,"path":914,"stem":915},{"title":919,"path":920,"stem":921},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":923,"path":924,"stem":925,"children":926},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[927,928,932,936,940,944,948,952,955,959,963],{"title":923,"path":924,"stem":925},{"title":929,"path":930,"stem":931},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":933,"path":934,"stem":935},"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":937,"path":938,"stem":939},"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":941,"path":942,"stem":943},"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":945,"path":946,"stem":947},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":949,"path":950,"stem":951},"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":641,"path":953,"stem":954},"\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":956,"path":957,"stem":958},"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":960,"path":961,"stem":962},"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":964,"path":965,"stem":966},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":968,"path":969,"stem":970,"children":971},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[972,973,991,1017,1027,1057,1061,1075,1084],{"title":968,"path":969,"stem":970},{"title":974,"path":975,"stem":976,"children":977},"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",[978,979,983,987],{"title":974,"path":975,"stem":976},{"title":980,"path":981,"stem":982},"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":984,"path":985,"stem":986},"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":988,"path":989,"stem":990},"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":992,"path":993,"stem":994,"children":995},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[996,997,1001,1005,1009,1013],{"title":992,"path":993,"stem":994},{"title":998,"path":999,"stem":1000},"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":1002,"path":1003,"stem":1004},"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":1006,"path":1007,"stem":1008},"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":1010,"path":1011,"stem":1012},"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":1014,"path":1015,"stem":1016},"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":1018,"path":1019,"stem":1020,"children":1021},"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",[1022,1023],{"title":1018,"path":1019,"stem":1020},{"title":1024,"path":1025,"stem":1026},"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":1028,"path":1029,"stem":1030,"children":1031},"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",[1032,1033,1037,1041,1045,1049,1053],{"title":1028,"path":1029,"stem":1030},{"title":1034,"path":1035,"stem":1036},"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":1038,"path":1039,"stem":1040},"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":1042,"path":1043,"stem":1044},"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":1046,"path":1047,"stem":1048},"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":1050,"path":1051,"stem":1052},"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":1054,"path":1055,"stem":1056},"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":1058,"path":1059,"stem":1060},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":1062,"path":1063,"stem":1064,"children":1065},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[1066,1067,1071],{"title":1062,"path":1063,"stem":1064},{"title":1068,"path":1069,"stem":1070},"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":1072,"path":1073,"stem":1074},"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":1076,"path":1077,"stem":1078,"children":1079},"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",[1080,1081],{"title":1076,"path":1077,"stem":1078},{"title":1082,"path":870,"stem":1083},"OOP32-PL. Prohibit indirect object call syntax","7.sei-cert-perl-coding-standard\u002F3.rules\u002F8.object-oriented-programming-oop\u002F2.oop32-pl",{"title":902,"path":1085,"stem":1086,"children":1087},"\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[1088,1089,1093],{"title":902,"path":1085,"stem":1086},{"title":1090,"path":1091,"stem":1092},"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":1094,"path":1095,"stem":1096},"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":1098,"path":1099,"stem":1100,"children":1101},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[1102,1103,1132,1165,1178,1191,1204,1229,1236],{"title":1098,"path":1099,"stem":1100},{"title":974,"path":1104,"stem":1105,"children":1106},"\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",[1107,1108,1112,1116,1120,1124,1128],{"title":974,"path":1104,"stem":1105},{"title":1109,"path":1110,"stem":1111},"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":1113,"path":1114,"stem":1115},"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":1117,"path":1118,"stem":1119},"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":1121,"path":1122,"stem":1123},"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":1125,"path":1126,"stem":1127},"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":1129,"path":1130,"stem":1131},"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":992,"path":1133,"stem":1134,"children":1135},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[1136,1137,1141,1145,1149,1153,1157,1161],{"title":992,"path":1133,"stem":1134},{"title":1138,"path":1139,"stem":1140},"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":1142,"path":1143,"stem":1144},"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":1146,"path":1147,"stem":1148},"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":1150,"path":1151,"stem":1152},"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":1154,"path":1155,"stem":1156},"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":1158,"path":1159,"stem":1160},"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":1162,"path":1163,"stem":1164},"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":1018,"path":1166,"stem":1167,"children":1168},"\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",[1169,1170,1174],{"title":1018,"path":1166,"stem":1167},{"title":1171,"path":1172,"stem":1173},"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":1175,"path":1176,"stem":1177},"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":1028,"path":1179,"stem":1180,"children":1181},"\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",[1182,1183,1187],{"title":1028,"path":1179,"stem":1180},{"title":1184,"path":1185,"stem":1186},"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":1188,"path":1189,"stem":1190},"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":1058,"path":1192,"stem":1193,"children":1194},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[1195,1196,1200],{"title":1058,"path":1192,"stem":1193},{"title":1197,"path":1198,"stem":1199},"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":1201,"path":1202,"stem":1203},"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":1062,"path":1205,"stem":1206,"children":1207},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[1208,1209,1213,1217,1221,1225],{"title":1062,"path":1205,"stem":1206},{"title":1210,"path":1211,"stem":1212},"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":1214,"path":1215,"stem":1216},"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":1218,"path":1219,"stem":1220},"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":1222,"path":1223,"stem":1224},"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":1226,"path":1227,"stem":1228},"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":1076,"path":1230,"stem":1231,"children":1232},"\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",[1233,1234,1235],{"title":1076,"path":1230,"stem":1231},{"title":898,"path":899,"stem":900},{"title":30,"path":892,"stem":894},{"title":902,"path":903,"stem":904},{"title":1238,"path":1239,"stem":1240,"children":1241},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[1242,1243,1247,1277],{"title":1238,"path":1239,"stem":1240},{"title":1244,"path":1245,"stem":1246},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":1248,"path":1249,"stem":1250,"children":1251},"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",[1252,1253,1257,1261,1265,1269,1273],{"title":1248,"path":1249,"stem":1250},{"title":1254,"path":1255,"stem":1256},"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":1258,"path":1259,"stem":1260},"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":1262,"path":1263,"stem":1264},"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":1266,"path":1267,"stem":1268},"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":1270,"path":1271,"stem":1272},"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":1274,"path":1275,"stem":1276},"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":1278,"path":1279,"stem":1280},"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",1775657793220]