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