[{"data":1,"prerenderedAt":1863},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc02-pl":28,"surround-\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc02-pl":1480,"sidebar-sei-cert-perl-coding-standard":1488},[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":1470,"extension":1471,"meta":1472,"navigation":7,"path":1476,"seo":1477,"stem":1478,"__hash__":1479},"content\u002F7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F4.msc02-pl.md","MSC02-PL. Run programs with full warnings and strict checking",{"type":32,"value":33,"toc":1454},"minimark",[34,38,64,70,81,95,104,107,414,417,461,466,469,525,528,534,545,646,651,654,891,896,909,914,920,973,975,990,997,1002,1008,1117,1121,1124,1190,1194,1297,1301,1339,1343,1426,1429,1450],[35,36,30],"h1",{"id":37},"msc02-pl-run-programs-with-full-warnings-and-strict-checking",[39,40,41,42,46,47,50,51,54,55,57,58,63],"p",{},"Perl provides several mechanisms for warning the user about potential problems with the program. The ",[43,44,45],"code",{},"  use warnings "," pragma turns on a default set of warnings for the Perl runtime to produce should it detect questionable code. The ",[43,48,49],{},"-w"," command-line argument serves the same purpose. It is considered so useful that the ",[43,52,53],{},"perl(1)"," manpage dryly notes the first bug in Perl is that \"the ",[43,56,49],{}," switch is not mandatory\" [ ",[59,60,62],"a",{"href":61},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Manpages","Wall 2011"," ] .",[39,65,66,67,69],{},"The ",[43,68,45],{}," pragma must be used in all Perl code.",[39,71,72,73,76,77,80],{},"One of the modules that Perl provides for additional safety is the ",[43,74,75],{},"strict"," module. It identifies programming constructs that are likely to be errors, such as unqualified and undeclared variables (that might be typos), dangerous references, and unqualified subroutine names. The ",[43,78,79],{},"  use strict "," pragma must also be used in all Perl code.",[39,82,83,84,86,87,90,91,94],{},"However, occasionally there is a need to disable warnings or strictness for some code that may look strange but is actually correct. The ",[43,85,49],{}," switch cannot enable or disable particular warnings on particular ranges of code. When a particular warning or strict checking must be disabled, the ",[43,88,89],{},"  no warnings ","or",[43,92,93],{},"  no strict "," pragmas should be used in as minimal a scope as possible. They should also disable the specific warning or strictness checker that would trigger a warning or fatal error rather than disable all checks.",[96,97,99,100,103],"h2",{"id":98},"noncompliant-code-example-warnings","Noncompliant Code Example ( ",[43,101,102],{},"warnings"," )",[39,105,106],{},"This noncompliant code example contains code that produces an unchecked warning.",[108,109,111],"code-block",{"quality":110},"bad",[112,113,118],"pre",{"className":114,"code":115,"language":116,"meta":117,"style":117},"language-perl shiki shiki-themes github-light github-dark monokai","use warnings;\nuse strict;\n\nmy %days = (\"Sunday\"    => 'pray',\n            \"Monday\"    => 'work',\n            \"Tuesday\"   => 'work',\n            \"Wednesday\" => 'work',\n            \"Thursday\"  => 'work',\n            \"Friday\"    => 'work',\n            \"Saturday\"  => 'rest');\n\nsub what_to_do {\n  my $day = shift;\n  if ($days{$day} eq 'work') {\n    return 'work hard';\n  }\n  if (exists $days{$day}) {\n    return $days{$day};\n  } else {\n    return \"do nothing\";\n  }\n}\n\n\nmy $task = what_to_do('tomorrow');\nprint \"Prepare to $task\\n\";\n","perl","",[43,119,120,133,141,147,169,182,195,208,221,233,247,252,266,282,299,310,316,330,338,349,359,364,370,375,380,393],{"__ignoreMap":117},[121,122,125,129],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"sC2Qs","use",[121,130,132],{"class":131},"sMOD_"," warnings;\n",[121,134,136,138],{"class":123,"line":135},2,[121,137,128],{"class":127},[121,139,140],{"class":131}," strict;\n",[121,142,144],{"class":123,"line":143},3,[121,145,146],{"emptyLinePlaceholder":7},"\n",[121,148,150,153,156,160,163,166],{"class":123,"line":149},4,[121,151,152],{"class":127},"my",[121,154,155],{"class":131}," %days = (",[121,157,159],{"class":158},"sstjo","\"Sunday\"",[121,161,162],{"class":127},"    =>",[121,164,165],{"class":158}," 'pray'",[121,167,168],{"class":131},",\n",[121,170,172,175,177,180],{"class":123,"line":171},5,[121,173,174],{"class":158},"            \"Monday\"",[121,176,162],{"class":127},[121,178,179],{"class":158}," 'work'",[121,181,168],{"class":131},[121,183,185,188,191,193],{"class":123,"line":184},6,[121,186,187],{"class":158},"            \"Tuesday\"",[121,189,190],{"class":127},"   =>",[121,192,179],{"class":158},[121,194,168],{"class":131},[121,196,198,201,204,206],{"class":123,"line":197},7,[121,199,200],{"class":158},"            \"Wednesday\"",[121,202,203],{"class":127}," =>",[121,205,179],{"class":158},[121,207,168],{"class":131},[121,209,211,214,217,219],{"class":123,"line":210},8,[121,212,213],{"class":158},"            \"Thursday\"",[121,215,216],{"class":127},"  =>",[121,218,179],{"class":158},[121,220,168],{"class":131},[121,222,224,227,229,231],{"class":123,"line":223},9,[121,225,226],{"class":158},"            \"Friday\"",[121,228,162],{"class":127},[121,230,179],{"class":158},[121,232,168],{"class":131},[121,234,236,239,241,244],{"class":123,"line":235},10,[121,237,238],{"class":158},"            \"Saturday\"",[121,240,216],{"class":127},[121,242,243],{"class":158}," 'rest'",[121,245,246],{"class":131},");\n",[121,248,250],{"class":123,"line":249},11,[121,251,146],{"emptyLinePlaceholder":7},[121,253,255,259,263],{"class":123,"line":254},12,[121,256,258],{"class":257},"sq6CD","sub",[121,260,262],{"class":261},"srTi1"," what_to_do",[121,264,265],{"class":131}," {\n",[121,267,269,272,275,279],{"class":123,"line":268},13,[121,270,271],{"class":127},"  my",[121,273,274],{"class":131}," $day = ",[121,276,278],{"class":277},"sTrkL","shift",[121,280,281],{"class":131},";\n",[121,283,285,288,291,294,296],{"class":123,"line":284},14,[121,286,287],{"class":127},"  if",[121,289,290],{"class":131}," ($days{$day} ",[121,292,293],{"class":277},"eq",[121,295,179],{"class":158},[121,297,298],{"class":131},") {\n",[121,300,302,305,308],{"class":123,"line":301},15,[121,303,304],{"class":127},"    return",[121,306,307],{"class":158}," 'work hard'",[121,309,281],{"class":131},[121,311,313],{"class":123,"line":312},16,[121,314,315],{"class":131},"  }\n",[121,317,319,321,324,327],{"class":123,"line":318},17,[121,320,287],{"class":127},[121,322,323],{"class":131}," (",[121,325,326],{"class":277},"exists",[121,328,329],{"class":131}," $days{$day}) {\n",[121,331,333,335],{"class":123,"line":332},18,[121,334,304],{"class":127},[121,336,337],{"class":131}," $days{$day};\n",[121,339,341,344,347],{"class":123,"line":340},19,[121,342,343],{"class":131},"  } ",[121,345,346],{"class":127},"else",[121,348,265],{"class":131},[121,350,352,354,357],{"class":123,"line":351},20,[121,353,304],{"class":127},[121,355,356],{"class":158}," \"do nothing\"",[121,358,281],{"class":131},[121,360,362],{"class":123,"line":361},21,[121,363,315],{"class":131},[121,365,367],{"class":123,"line":366},22,[121,368,369],{"class":131},"}\n",[121,371,373],{"class":123,"line":372},23,[121,374,146],{"emptyLinePlaceholder":7},[121,376,378],{"class":123,"line":377},24,[121,379,146],{"emptyLinePlaceholder":7},[121,381,383,385,388,391],{"class":123,"line":382},25,[121,384,152],{"class":127},[121,386,387],{"class":131}," $task = what_to_do(",[121,389,390],{"class":158},"'tomorrow'",[121,392,246],{"class":131},[121,394,396,399,402,405,409,412],{"class":123,"line":395},26,[121,397,398],{"class":277},"print",[121,400,401],{"class":158}," \"Prepare to ",[121,403,404],{"class":131},"$task",[121,406,408],{"class":407},"s7F3e","\\n",[121,410,411],{"class":158},"\"",[121,413,281],{"class":131},[39,415,416],{},"This code produces the following output:",[112,418,422],{"className":419,"code":420,"language":421,"meta":117,"style":117},"language-java shiki shiki-themes github-light github-dark monokai","Use of uninitialized value within %days in string eq at .\u002Fexample.pl line 16.\nPrepare to do nothing\n","java",[43,423,424,447],{"__ignoreMap":117},[121,425,426,430,433,436,439,441,444],{"class":123,"line":124},[121,427,429],{"class":428},"sk8M1","Use",[121,431,432],{"class":131}," of uninitialized value within ",[121,434,435],{"class":127},"%",[121,437,438],{"class":131},"days in string eq at .",[121,440,6],{"class":127},[121,442,443],{"class":131},"example.pl line ",[121,445,446],{"class":407},"16.\n",[121,448,449,452,455,458],{"class":123,"line":135},[121,450,451],{"class":428},"Prepare",[121,453,454],{"class":131}," to ",[121,456,457],{"class":127},"do",[121,459,460],{"class":131}," nothing\n",[96,462,99,464,103],{"id":463},"noncompliant-code-example-warnings-1",[43,465,102],{},[39,467,468],{},"This noncompliant code example attempts to suppress the particular warning printed.",[108,470,471],{"quality":110},[112,472,474],{"className":114,"code":473,"language":116,"meta":117,"style":117},"use warnings;\nuse strict;\nno warnings 'uninitialized';\n\nmy %days = (\"Sunday\"    => 'pray',\n# ...\n",[43,475,476,482,488,501,505,519],{"__ignoreMap":117},[121,477,478,480],{"class":123,"line":124},[121,479,128],{"class":127},[121,481,132],{"class":131},[121,483,484,486],{"class":123,"line":135},[121,485,128],{"class":127},[121,487,140],{"class":131},[121,489,490,493,496,499],{"class":123,"line":143},[121,491,492],{"class":277},"no",[121,494,495],{"class":131}," warnings ",[121,497,498],{"class":158},"'uninitialized'",[121,500,281],{"class":131},[121,502,503],{"class":123,"line":149},[121,504,146],{"emptyLinePlaceholder":7},[121,506,507,509,511,513,515,517],{"class":123,"line":171},[121,508,152],{"class":127},[121,510,155],{"class":131},[121,512,159],{"class":158},[121,514,162],{"class":127},[121,516,165],{"class":158},[121,518,168],{"class":131},[121,520,521],{"class":123,"line":184},[121,522,524],{"class":523},"s8-w5","# ...\n",[39,526,527],{},"Unfortunately, although this code correctly suppresses the warning message, it has the undesired effect of suppressing the warning message throughout the entire program and will likely suppress the warning in other lines of code that are not known to be correct.",[96,529,531,532,103],{"id":530},"compliant-solution-warnings","Compliant Solution ( ",[43,533,102],{},[39,535,536,537,540,541,544],{},"This compliant solution suppresses the warning in as minimal a scope as possible. Because the ",[43,538,539],{},"uninitialized"," warning is suppressed only inside the ",[43,542,543],{},"what_to_do"," subroutine, other regions of the code can still generate this warning.",[108,546,548],{"quality":547},"good",[112,549,551],{"className":114,"code":550,"language":116,"meta":117,"style":117},"sub what_to_do {\n  my $day = shift;\n  no warnings 'uninitialized';\n  if ($days{$day} eq 'work') {\n    return 'work hard';\n  }\n  if (exists $days{$day}) {\n    return $days{$day};\n  } else {\n    return \"do nothing\";\n  }\n}\n",[43,552,553,561,571,582,594,602,606,616,622,630,638,642],{"__ignoreMap":117},[121,554,555,557,559],{"class":123,"line":124},[121,556,258],{"class":257},[121,558,262],{"class":261},[121,560,265],{"class":131},[121,562,563,565,567,569],{"class":123,"line":135},[121,564,271],{"class":127},[121,566,274],{"class":131},[121,568,278],{"class":277},[121,570,281],{"class":131},[121,572,573,576,578,580],{"class":123,"line":143},[121,574,575],{"class":277},"  no",[121,577,495],{"class":131},[121,579,498],{"class":158},[121,581,281],{"class":131},[121,583,584,586,588,590,592],{"class":123,"line":149},[121,585,287],{"class":127},[121,587,290],{"class":131},[121,589,293],{"class":277},[121,591,179],{"class":158},[121,593,298],{"class":131},[121,595,596,598,600],{"class":123,"line":171},[121,597,304],{"class":127},[121,599,307],{"class":158},[121,601,281],{"class":131},[121,603,604],{"class":123,"line":184},[121,605,315],{"class":131},[121,607,608,610,612,614],{"class":123,"line":197},[121,609,287],{"class":127},[121,611,323],{"class":131},[121,613,326],{"class":277},[121,615,329],{"class":131},[121,617,618,620],{"class":123,"line":210},[121,619,304],{"class":127},[121,621,337],{"class":131},[121,623,624,626,628],{"class":123,"line":223},[121,625,343],{"class":131},[121,627,346],{"class":127},[121,629,265],{"class":131},[121,631,632,634,636],{"class":123,"line":235},[121,633,304],{"class":127},[121,635,356],{"class":158},[121,637,281],{"class":131},[121,639,640],{"class":123,"line":249},[121,641,315],{"class":131},[121,643,644],{"class":123,"line":254},[121,645,369],{"class":131},[96,647,99,649,103],{"id":648},"noncompliant-code-example-strict",[43,650,75],{},[39,652,653],{},"This noncompliant code example contains code that references a nonexistant variable.",[108,655,656],{"quality":110},[112,657,659],{"className":114,"code":658,"language":116,"meta":117,"style":117},"use strict;\nuse warnings;\n\nour $sunday    = 'pray';\nour $monday    = 'work';\nour $tuesday   = 'work';\nour $wednesday = 'work';\nour $thursday  = 'work';\nour $friday    = 'work';\nour $saturday  = 'rest';\n\nsub what_to_do {\n  my $day = shift;\n  no warnings 'uninitialized';\n  if ($$day eq 'work') {\n    return 'work hard';\n  }\n  if (defined $$day) {\n    return $$day;\n  } else {\n    return \"do nothing\";\n  }\n}\n\n\nmy $task = what_to_do('tomorrow');\nprint \"Prepare to $task\\n\";\n",[43,660,661,667,673,677,690,702,713,724,735,746,758,762,770,780,790,803,811,815,827,834,842,850,854,858,862,866,876],{"__ignoreMap":117},[121,662,663,665],{"class":123,"line":124},[121,664,128],{"class":127},[121,666,140],{"class":131},[121,668,669,671],{"class":123,"line":135},[121,670,128],{"class":127},[121,672,132],{"class":131},[121,674,675],{"class":123,"line":143},[121,676,146],{"emptyLinePlaceholder":7},[121,678,679,682,685,688],{"class":123,"line":149},[121,680,681],{"class":127},"our",[121,683,684],{"class":131}," $sunday    = ",[121,686,687],{"class":158},"'pray'",[121,689,281],{"class":131},[121,691,692,694,697,700],{"class":123,"line":171},[121,693,681],{"class":127},[121,695,696],{"class":131}," $monday    = ",[121,698,699],{"class":158},"'work'",[121,701,281],{"class":131},[121,703,704,706,709,711],{"class":123,"line":184},[121,705,681],{"class":127},[121,707,708],{"class":131}," $tuesday   = ",[121,710,699],{"class":158},[121,712,281],{"class":131},[121,714,715,717,720,722],{"class":123,"line":197},[121,716,681],{"class":127},[121,718,719],{"class":131}," $wednesday = ",[121,721,699],{"class":158},[121,723,281],{"class":131},[121,725,726,728,731,733],{"class":123,"line":210},[121,727,681],{"class":127},[121,729,730],{"class":131}," $thursday  = ",[121,732,699],{"class":158},[121,734,281],{"class":131},[121,736,737,739,742,744],{"class":123,"line":223},[121,738,681],{"class":127},[121,740,741],{"class":131}," $friday    = ",[121,743,699],{"class":158},[121,745,281],{"class":131},[121,747,748,750,753,756],{"class":123,"line":235},[121,749,681],{"class":127},[121,751,752],{"class":131}," $saturday  = ",[121,754,755],{"class":158},"'rest'",[121,757,281],{"class":131},[121,759,760],{"class":123,"line":249},[121,761,146],{"emptyLinePlaceholder":7},[121,763,764,766,768],{"class":123,"line":254},[121,765,258],{"class":257},[121,767,262],{"class":261},[121,769,265],{"class":131},[121,771,772,774,776,778],{"class":123,"line":268},[121,773,271],{"class":127},[121,775,274],{"class":131},[121,777,278],{"class":277},[121,779,281],{"class":131},[121,781,782,784,786,788],{"class":123,"line":284},[121,783,575],{"class":277},[121,785,495],{"class":131},[121,787,498],{"class":158},[121,789,281],{"class":131},[121,791,792,794,797,799,801],{"class":123,"line":301},[121,793,287],{"class":127},[121,795,796],{"class":131}," ($$day ",[121,798,293],{"class":277},[121,800,179],{"class":158},[121,802,298],{"class":131},[121,804,805,807,809],{"class":123,"line":312},[121,806,304],{"class":127},[121,808,307],{"class":158},[121,810,281],{"class":131},[121,812,813],{"class":123,"line":318},[121,814,315],{"class":131},[121,816,817,819,821,824],{"class":123,"line":332},[121,818,287],{"class":127},[121,820,323],{"class":131},[121,822,823],{"class":277},"defined",[121,825,826],{"class":131}," $$day) {\n",[121,828,829,831],{"class":123,"line":340},[121,830,304],{"class":127},[121,832,833],{"class":131}," $$day;\n",[121,835,836,838,840],{"class":123,"line":351},[121,837,343],{"class":131},[121,839,346],{"class":127},[121,841,265],{"class":131},[121,843,844,846,848],{"class":123,"line":361},[121,845,304],{"class":127},[121,847,356],{"class":158},[121,849,281],{"class":131},[121,851,852],{"class":123,"line":366},[121,853,315],{"class":131},[121,855,856],{"class":123,"line":372},[121,857,369],{"class":131},[121,859,860],{"class":123,"line":377},[121,861,146],{"emptyLinePlaceholder":7},[121,863,864],{"class":123,"line":382},[121,865,146],{"emptyLinePlaceholder":7},[121,867,868,870,872,874],{"class":123,"line":395},[121,869,152],{"class":127},[121,871,387],{"class":131},[121,873,390],{"class":158},[121,875,246],{"class":131},[121,877,879,881,883,885,887,889],{"class":123,"line":878},27,[121,880,398],{"class":277},[121,882,401],{"class":158},[121,884,404],{"class":131},[121,886,408],{"class":407},[121,888,411],{"class":158},[121,890,281],{"class":131},[39,892,66,893,895],{},[43,894,75],{}," pragma catches the improper reference and aborts the program, producing the following error message:",[112,897,899],{"className":419,"code":898,"language":421,"meta":117,"style":117},"Can't use string (\"tomorrow\") as a SCALAR ref while \"strict refs\" in use at .\u002Fexample.pl line 19.\n",[43,900,901],{"__ignoreMap":117},[121,902,903,906],{"class":123,"line":124},[121,904,905],{"class":131},"Can",[121,907,908],{"class":158},"'t use string (\"tomorrow\") as a SCALAR ref while \"strict refs\" in use at .\u002Fexample.pl line 19.\n",[96,910,99,912,103],{"id":911},"noncompliant-code-example-strict-1",[43,913,75],{},[39,915,916,917,919],{},"This noncompliant code example disables the ",[43,918,75],{}," pragma, producing proper output. However, strictness is suppressed throughout the entire program.",[108,921,922],{"quality":110},[112,923,925],{"className":114,"code":924,"language":116,"meta":117,"style":117},"use warnings;\nuse strict;\n\nno strict 'refs';\n\nour $sunday    = 'pray';\n# ...\n",[43,926,927,933,939,943,955,959,969],{"__ignoreMap":117},[121,928,929,931],{"class":123,"line":124},[121,930,128],{"class":127},[121,932,132],{"class":131},[121,934,935,937],{"class":123,"line":135},[121,936,128],{"class":127},[121,938,140],{"class":131},[121,940,941],{"class":123,"line":143},[121,942,146],{"emptyLinePlaceholder":7},[121,944,945,947,950,953],{"class":123,"line":149},[121,946,492],{"class":277},[121,948,949],{"class":131}," strict ",[121,951,952],{"class":158},"'refs'",[121,954,281],{"class":131},[121,956,957],{"class":123,"line":171},[121,958,146],{"emptyLinePlaceholder":7},[121,960,961,963,965,967],{"class":123,"line":184},[121,962,681],{"class":127},[121,964,684],{"class":131},[121,966,687],{"class":158},[121,968,281],{"class":131},[121,970,971],{"class":123,"line":197},[121,972,524],{"class":523},[39,974,416],{},[112,976,978],{"className":419,"code":977,"language":421,"meta":117,"style":117},"Prepare to do nothing\n",[43,979,980],{"__ignoreMap":117},[121,981,982,984,986,988],{"class":123,"line":124},[121,983,451],{"class":428},[121,985,454],{"class":131},[121,987,457],{"class":127},[121,989,460],{"class":131},[39,991,992,993,996],{},"This example may be considered correct, but the code works by referencing a nonexistent variable ",[43,994,995],{},"$tomorrow"," .",[96,998,531,1000,103],{"id":999},"compliant-solution-strict",[43,1001,75],{},[39,1003,1004,1005,1007],{},"This compliant solution suppresses the strictness checking to as minimal a scope as possible. Because the strictness checking is suppressed only inside the ",[43,1006,543],{}," subroutine, other regions of the code can still be checked for strict compliance.",[108,1009,1010],{"quality":547},[112,1011,1013],{"className":114,"code":1012,"language":116,"meta":117,"style":117},"sub what_to_do {\n  my $day = shift;\n  no warnings 'uninitialized';\n  no strict 'refs';\n  if ($$day eq 'work') {\n    return 'work hard';\n  }\n  if (defined $$day) {\n    return $$day;\n  } else {\n    return \"do nothing\";\n  }\n}\n",[43,1014,1015,1023,1033,1043,1053,1065,1073,1077,1087,1093,1101,1109,1113],{"__ignoreMap":117},[121,1016,1017,1019,1021],{"class":123,"line":124},[121,1018,258],{"class":257},[121,1020,262],{"class":261},[121,1022,265],{"class":131},[121,1024,1025,1027,1029,1031],{"class":123,"line":135},[121,1026,271],{"class":127},[121,1028,274],{"class":131},[121,1030,278],{"class":277},[121,1032,281],{"class":131},[121,1034,1035,1037,1039,1041],{"class":123,"line":143},[121,1036,575],{"class":277},[121,1038,495],{"class":131},[121,1040,498],{"class":158},[121,1042,281],{"class":131},[121,1044,1045,1047,1049,1051],{"class":123,"line":149},[121,1046,575],{"class":277},[121,1048,949],{"class":131},[121,1050,952],{"class":158},[121,1052,281],{"class":131},[121,1054,1055,1057,1059,1061,1063],{"class":123,"line":171},[121,1056,287],{"class":127},[121,1058,796],{"class":131},[121,1060,293],{"class":277},[121,1062,179],{"class":158},[121,1064,298],{"class":131},[121,1066,1067,1069,1071],{"class":123,"line":184},[121,1068,304],{"class":127},[121,1070,307],{"class":158},[121,1072,281],{"class":131},[121,1074,1075],{"class":123,"line":197},[121,1076,315],{"class":131},[121,1078,1079,1081,1083,1085],{"class":123,"line":210},[121,1080,287],{"class":127},[121,1082,323],{"class":131},[121,1084,823],{"class":277},[121,1086,826],{"class":131},[121,1088,1089,1091],{"class":123,"line":223},[121,1090,304],{"class":127},[121,1092,833],{"class":131},[121,1094,1095,1097,1099],{"class":123,"line":235},[121,1096,343],{"class":131},[121,1098,346],{"class":127},[121,1100,265],{"class":131},[121,1102,1103,1105,1107],{"class":123,"line":249},[121,1104,304],{"class":127},[121,1106,356],{"class":158},[121,1108,281],{"class":131},[121,1110,1111],{"class":123,"line":254},[121,1112,315],{"class":131},[121,1114,1115],{"class":123,"line":268},[121,1116,369],{"class":131},[96,1118,1120],{"id":1119},"risk-assessment","Risk Assessment",[39,1122,1123],{},"Suppressing warnings can mask problems that would otherwise be quickly recognized and fixed.",[1125,1126,1127,1146],"table",{},[1128,1129,1130],"thead",{},[1131,1132,1133,1136,1138,1140,1142,1144],"tr",{},[1134,1135],"th",{},[1134,1137],{},[1134,1139],{},[1134,1141],{},[1134,1143],{},[1134,1145],{},[1147,1148,1149,1170],"tbody",{},[1131,1150,1151,1155,1158,1161,1164,1167],{},[1152,1153,1154],"td",{},"Recommendation",[1152,1156,1157],{},"Severity",[1152,1159,1160],{},"Likelihood",[1152,1162,1163],{},"Remediation Cost",[1152,1165,1166],{},"Priority",[1152,1168,1169],{},"Level",[1131,1171,1172,1175,1178,1181,1184,1187],{},[1152,1173,1174],{},"MSC02-PL",[1152,1176,1177],{},"Low",[1152,1179,1180],{},"Unlikely",[1152,1182,1183],{},"Medium",[1152,1185,1186],{},"P2",[1152,1188,1189],{},"L3",[96,1191,1193],{"id":1192},"automated-detection","Automated Detection",[1125,1195,1200,1210],{"className":1196,"style":1199},[1197,1198],"wrapped","relative-table","width: 53.8818%;",[1201,1202,1203,1207],"colgroup",{},[1204,1205],"col",{"style":1206},"width: 17%",[1204,1208],{"style":1209},"width: 82%",[1147,1211,1212,1226,1240,1253,1265,1277],{},[1131,1213,1216,1221],{"className":1214},[1215],"header",[1134,1217,1218],{},[39,1219,1220],{},"Tool",[1134,1222,1223],{},[39,1224,1225],{},"Diagnostic",[1131,1227,1230,1235],{"className":1228},[1229],"odd",[1152,1231,1232],{},[39,1233,1234],{},"Perl::Critic",[1152,1236,1237],{},[39,1238,1239],{},"TestingAndDebugging::ProhibitNoStrict",[1131,1241,1244,1248],{"className":1242},[1243],"even",[1152,1245,1246],{},[39,1247,1234],{},[1152,1249,1250],{},[39,1251,1252],{},"TestingAndDebugging:;ProhibitNoWarnings",[1131,1254,1256,1260],{"className":1255},[1229],[1152,1257,1258],{},[39,1259,1234],{},[1152,1261,1262],{},[39,1263,1264],{},"TestingAndDebugging::ProhibitProlongedStrictureOverride",[1131,1266,1268,1272],{"className":1267},[1243],[1152,1269,1270],{},[39,1271,1234],{},[1152,1273,1274],{},[39,1275,1276],{},"TestingAndDebugging::RequireUseStrict",[1131,1278,1280,1288],{"className":1279},[1229],[1152,1281,1282],{},[39,1283,1284],{},[59,1285,1287],{"href":1286},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Fbb-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[1152,1289,1290],{},[39,1291,1292,1293,1296],{},"PERL_D108",[1294,1295],"br",{},"\nPERL_D109",[96,1298,1300],{"id":1299},"related-guidelines","Related Guidelines",[1125,1302,1303,1311],{},[1128,1304,1305],{},[1131,1306,1307,1309],{},[1134,1308],{},[1134,1310],{},[1147,1312,1313,1326],{},[1131,1314,1315,1320],{},[1152,1316,1317],{},[59,1318,1319],{"href":17},"SEI CERT C Coding Standard",[1152,1321,1322],{},[59,1323,1325],{"href":1324},"\u002Fsei-cert-c-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc00-c","MSC00-C. Compile cleanly at high warning levels",[1131,1327,1328,1333],{},[1152,1329,1330],{},[59,1331,1332],{"href":20},"SEI CERT C++ Coding Standard",[1152,1334,1335],{},[59,1336,1338],{"href":1337},"\u002Fsei-cert-cpp-coding-standard\u002Fthe-void\u002Fvoid-3-recommendations\u002Fvoid-rec-49-miscellaneous-msc\u002Fvoid-msc00-cpp-compile-cleanly-at-high-warning-levels","VOID MSC00-CPP. Compile cleanly at high warning levels",[96,1340,1342],{"id":1341},"bibliography","Bibliography",[1125,1344,1346,1353],{"className":1345},[1197],[1201,1347,1348,1351],{},[1204,1349],{"style":1350},"width: 50%",[1204,1352],{"style":1350},[1147,1354,1355,1372,1408],{},[1131,1356,1358,1368],{"className":1357},[1215],[1134,1359,1362,1363,1367],{"className":1360},[1361],"nohighlight","[ ",[59,1364,1366],{"href":1365},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Conway05","Conway 2005"," ]",[1134,1369,1371],{"className":1370},[1361],"\"Overriding Strictures,\" p. 433",[1131,1373,1375,1381],{"className":1374},[1229],[1152,1376,1362,1377,1367],{},[59,1378,1380],{"href":1379},"\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-CPAN","CPAN",[1152,1382,1383,1387,1388,1391,1392,1394,1391,1398,1400,1391,1403,1405],{},[59,1384,1386],{"href":1385},"http:\u002F\u002Fsearch.cpan.org\u002F%7Eelliotjs\u002FPerl-Critic-1.116\u002F","Elliot Shank, Perl-Critic-1.116"," ",[59,1389,1239],{"href":1390},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FTestingAndDebugging\u002FProhibitNoStrict.pm"," ,",[1294,1393],{},[59,1395,1397],{"href":1396},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FTestingAndDebugging\u002FProhibitNoWarnngs.pm","TestingAndDebugging::ProhibitNoWarnings",[1294,1399],{},[59,1401,1264],{"href":1402},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FTestingAndDebugging\u002FProhibitProlongedStrictureOverride.pm",[1294,1404],{},[59,1406,1276],{"href":1407},"http:\u002F\u002Fsearch.cpan.org\u002Fdist\u002FPerl-Critic\u002Flib\u002FPerl\u002FCritic\u002FPolicy\u002FTestingAndDebugging\u002FRequireUseStrict.pm",[1131,1409,1411,1415],{"className":1410},[1243],[1152,1412,1362,1413,1367],{},[59,1414,62],{"href":61},[1152,1416,1417,1387,1420,1387,1423],{},[59,1418,116],{"href":1419},"http:\u002F\u002Fperldoc.perl.org\u002Fperl.html",[59,1421,75],{"href":1422},"http:\u002F\u002Fperldoc.perl.org\u002Fstrict.html",[59,1424,102],{"href":1425},"http:\u002F\u002Fperldoc.perl.org\u002Fwarnings.html",[1427,1428],"hr",{},[39,1430,1431,1387,1438,1387,1444],{},[59,1432,1434],{"href":1433},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc01-pl",[1435,1436],"img",{"src":1437},"\u002Fattachments\u002F88890562\u002F88892207.png",[59,1439,1441],{"href":1440},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002F",[1435,1442],{"src":1443},"\u002Fattachments\u002F88890562\u002F88892209.png",[59,1445,1447],{"href":1446},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fobject-oriented-programming-oop\u002F",[1435,1448],{"src":1449},"\u002Fattachments\u002F88890562\u002F88892208.png",[1451,1452,1453],"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 .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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 .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}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}",{"title":117,"searchDepth":135,"depth":135,"links":1455},[1456,1458,1459,1461,1463,1464,1466,1467,1468,1469],{"id":98,"depth":135,"text":1457},"Noncompliant Code Example ( warnings )",{"id":463,"depth":135,"text":1457},{"id":530,"depth":135,"text":1460},"Compliant Solution ( warnings )",{"id":648,"depth":135,"text":1462},"Noncompliant Code Example ( strict )",{"id":911,"depth":135,"text":1462},{"id":999,"depth":135,"text":1465},"Compliant Solution ( strict )",{"id":1119,"depth":135,"text":1120},{"id":1192,"depth":135,"text":1193},{"id":1299,"depth":135,"text":1300},{"id":1341,"depth":135,"text":1342},"Perl provides several mechanisms for warning the user about potential problems with the program. The   use warnings  pragma turns on a default set of warnings for the Perl runtime to produce should it detect questionable code. The -w command-line argument serves the same purpose. It is considered so useful that the perl(1) manpage dryly notes the first bug in Perl is that \"the -w switch is not mandatory\" [ Wall 2011 ] .","md",{"tags":1473},[1474,1475],"msc","recommendation","\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc\u002Fmsc02-pl",{"title":30,"description":1470},"7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F4.msc02-pl","zZ0MfGw1InUz3AYdf6QfKOzaNa-Lk6WTYQgI8sOSGkM",[1481,1484],{"title":1482,"path":1433,"stem":1483,"children":-1},"MSC01-PL. Detect and remove unused variables","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F3.msc01-pl",{"title":1485,"path":1486,"stem":1487,"children":-1},"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",[1489],{"title":1490,"path":1491,"stem":1492,"children":1493},"SEI CERT Perl Coding Standard","\u002Fsei-cert-perl-coding-standard","7.sei-cert-perl-coding-standard\u002F1.index",[1494,1495,1550,1682,1821],{"title":1490,"path":1491,"stem":1492},{"title":1496,"path":1497,"stem":1498,"children":1499},"Front Matter","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F1.index",[1500,1501,1505],{"title":1496,"path":1497,"stem":1498},{"title":1502,"path":1503,"stem":1504},"Deprecations","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fdeprecations","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F2.deprecations",{"title":1506,"path":1507,"stem":1508,"children":1509},"Introduction","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.index",[1510,1511,1515,1519,1523,1527,1531,1535,1538,1542,1546],{"title":1506,"path":1507,"stem":1508},{"title":1512,"path":1513,"stem":1514},"Scope","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F01.scope",{"title":1516,"path":1517,"stem":1518},"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":1520,"path":1521,"stem":1522},"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":1524,"path":1525,"stem":1526},"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":1528,"path":1529,"stem":1530},"Usage","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F05.usage",{"title":1532,"path":1533,"stem":1534},"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":1120,"path":1536,"stem":1537},"\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":1539,"path":1540,"stem":1541},"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":1543,"path":1544,"stem":1545},"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":1547,"path":1548,"stem":1549},"Acknowledgements","\u002Fsei-cert-perl-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgements","7.sei-cert-perl-coding-standard\u002F2.front-matter\u002F3.introduction\u002F11.acknowledgements",{"title":1551,"path":1552,"stem":1553,"children":1554},"Rules","\u002Fsei-cert-perl-coding-standard\u002Frules","7.sei-cert-perl-coding-standard\u002F3.rules\u002F1.index",[1555,1556,1574,1600,1610,1640,1644,1658,1668],{"title":1551,"path":1552,"stem":1553},{"title":1557,"path":1558,"stem":1559,"children":1560},"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",[1561,1562,1566,1570],{"title":1557,"path":1558,"stem":1559},{"title":1563,"path":1564,"stem":1565},"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":1567,"path":1568,"stem":1569},"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":1571,"path":1572,"stem":1573},"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":1575,"path":1576,"stem":1577,"children":1578},"Expressions (EXP)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F3.rules\u002F3.expressions-exp\u002F1.index",[1579,1580,1584,1588,1592,1596],{"title":1575,"path":1576,"stem":1577},{"title":1581,"path":1582,"stem":1583},"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":1585,"path":1586,"stem":1587},"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":1589,"path":1590,"stem":1591},"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":1593,"path":1594,"stem":1595},"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":1597,"path":1598,"stem":1599},"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":1601,"path":1602,"stem":1603,"children":1604},"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",[1605,1606],{"title":1601,"path":1602,"stem":1603},{"title":1607,"path":1608,"stem":1609},"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":1611,"path":1612,"stem":1613,"children":1614},"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",[1615,1616,1620,1624,1628,1632,1636],{"title":1611,"path":1612,"stem":1613},{"title":1617,"path":1618,"stem":1619},"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":1621,"path":1622,"stem":1623},"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":1625,"path":1626,"stem":1627},"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":1629,"path":1630,"stem":1631},"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":1633,"path":1634,"stem":1635},"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":1637,"path":1638,"stem":1639},"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":1641,"path":1642,"stem":1643},"Integers (INT)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F3.rules\u002F6.integers-int",{"title":1645,"path":1646,"stem":1647,"children":1648},"Miscellaneous (MSC)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F3.rules\u002F7.miscellaneous-msc\u002F1.index",[1649,1650,1654],{"title":1645,"path":1646,"stem":1647},{"title":1651,"path":1652,"stem":1653},"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":1655,"path":1656,"stem":1657},"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":1659,"path":1660,"stem":1661,"children":1662},"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",[1663,1664],{"title":1659,"path":1660,"stem":1661},{"title":1665,"path":1666,"stem":1667},"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":1669,"path":1670,"stem":1671,"children":1672},"Strings (STR)","\u002Fsei-cert-perl-coding-standard\u002Frules\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F3.rules\u002F9.strings-str\u002F1.index",[1673,1674,1678],{"title":1669,"path":1670,"stem":1671},{"title":1675,"path":1676,"stem":1677},"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":1679,"path":1680,"stem":1681},"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":1683,"path":1684,"stem":1685,"children":1686},"Recommendations","\u002Fsei-cert-perl-coding-standard\u002Frecommendations","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F1.index",[1687,1688,1717,1750,1763,1776,1789,1805,1818],{"title":1683,"path":1684,"stem":1685},{"title":1557,"path":1689,"stem":1690,"children":1691},"\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",[1692,1693,1697,1701,1705,1709,1713],{"title":1557,"path":1689,"stem":1690},{"title":1694,"path":1695,"stem":1696},"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":1698,"path":1699,"stem":1700},"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":1702,"path":1703,"stem":1704},"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":1706,"path":1707,"stem":1708},"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":1710,"path":1711,"stem":1712},"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":1714,"path":1715,"stem":1716},"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":1575,"path":1718,"stem":1719,"children":1720},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fexpressions-exp","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F3.expressions-exp\u002F1.index",[1721,1722,1726,1730,1734,1738,1742,1746],{"title":1575,"path":1718,"stem":1719},{"title":1723,"path":1724,"stem":1725},"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":1727,"path":1728,"stem":1729},"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":1731,"path":1732,"stem":1733},"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":1735,"path":1736,"stem":1737},"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":1739,"path":1740,"stem":1741},"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":1743,"path":1744,"stem":1745},"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":1747,"path":1748,"stem":1749},"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":1601,"path":1751,"stem":1752,"children":1753},"\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",[1754,1755,1759],{"title":1601,"path":1751,"stem":1752},{"title":1756,"path":1757,"stem":1758},"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":1760,"path":1761,"stem":1762},"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":1611,"path":1764,"stem":1765,"children":1766},"\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",[1767,1768,1772],{"title":1611,"path":1764,"stem":1765},{"title":1769,"path":1770,"stem":1771},"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":1773,"path":1774,"stem":1775},"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":1641,"path":1777,"stem":1778,"children":1779},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fintegers-int","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F6.integers-int\u002F1.index",[1780,1781,1785],{"title":1641,"path":1777,"stem":1778},{"title":1782,"path":1783,"stem":1784},"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":1786,"path":1787,"stem":1788},"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":1645,"path":1790,"stem":1791,"children":1792},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fmiscellaneous-msc","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F7.miscellaneous-msc\u002F1.index",[1793,1794,1798,1799,1800,1801],{"title":1645,"path":1790,"stem":1791},{"title":1795,"path":1796,"stem":1797},"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":1482,"path":1433,"stem":1483},{"title":30,"path":1476,"stem":1478},{"title":1485,"path":1486,"stem":1487},{"title":1802,"path":1803,"stem":1804},"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":1659,"path":1806,"stem":1807,"children":1808},"\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",[1809,1810,1814],{"title":1659,"path":1806,"stem":1807},{"title":1811,"path":1812,"stem":1813},"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":1815,"path":1816,"stem":1817},"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":1669,"path":1819,"stem":1820},"\u002Fsei-cert-perl-coding-standard\u002Frecommendations\u002Fstrings-str","7.sei-cert-perl-coding-standard\u002F4.recommendations\u002F9.strings-str",{"title":1822,"path":1823,"stem":1824,"children":1825},"Back Matter","\u002Fsei-cert-perl-coding-standard\u002Fback-matter","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F1.index",[1826,1827,1831,1859],{"title":1822,"path":1823,"stem":1824},{"title":1828,"path":1829,"stem":1830},"AA. Bibliography","\u002Fsei-cert-perl-coding-standard\u002Fback-matter\u002Faa-bibliography","7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F2.aa-bibliography",{"title":1832,"path":1833,"stem":1834,"children":1835},"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",[1836,1837,1841,1845,1849,1853,1855],{"title":1832,"path":1833,"stem":1834},{"title":1838,"path":1839,"stem":1840},"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":1842,"path":1843,"stem":1844},"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":1846,"path":1847,"stem":1848},"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":1850,"path":1851,"stem":1852},"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":1287,"path":1286,"stem":1854},"7.sei-cert-perl-coding-standard\u002F5.back-matter\u002F3.bb-analyzers\u002F6.security-reviewer-static-reviewer",{"title":1856,"path":1857,"stem":1858},"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":1860,"path":1861,"stem":1862},"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",1775657795513]