{
  "ml": {
    "v": "7",
    "eng": "3.0.0-beta.0",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.000036507845,
        "rte": "az",
        "prob": 0.000036507845
      },
      {
        "cls": 0,
        "raw": 0.0000894169,
        "rte": "az/tar",
        "prob": 0.0000894169
      }
    ],
    "prob": 0.000036507845,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00003650784492492676,
        "type": "tar.gz"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000021855035811313428,
        "type": "perl"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000024626651793369092,
        "type": "perl"
      },
      {
        "id": 13,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000021596750229946338,
        "type": "perl"
      },
      {
        "id": 15,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000019321838408359326,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-10-17T02:38:33Z"
  },
  "path": "Text-Fab-0.03.tar.gz",
  "raw": {
    "files": [
      {
        "id": 0,
        "mol": "H(F)Md",
        "sha": "a0fe6cc4fd51155c22dfc9dccbcae5207a9ac73e814a3f499f6d092dfa81e7d7",
        "path": "Text-Fab-0.03.tar.gz",
        "risk": 2,
        "size": 41241,
        "type": "tar.gz",
        "facts": {
          "metrics": {
            "file": {
              "size": 41241,
              "entropy": 7.99
            },
            "binary": {
              "peak_region_bytes": 40960,
              "peak_region_entropy": 7.83
            }
          }
        },
        "ident": {
          "name": {
            "value": "Text-Fab",
            "source": "file.basename",
            "verified": false
          },
          "trust": "unsigned",
          "version": {
            "value": "0.03",
            "source": "file.basename",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "metadata/file/profile/identifier-population::low-identifier-reuse",
            "conf": 0.7,
            "crit": 3,
            "desc": "Low identifier reuse ratio",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "micro-behaviors/fs/read/file/full::perl-slurp-local-record-separator",
            "conf": 0.94,
            "crit": 3,
            "desc": "Perl slurps a filehandle",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/import/perl/extutils/makemaker::extutils/makemaker",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports ExtUtils::MakeMaker",
            "from": [
              {
                "file": 2
              }
            ]
          },
          {
            "id": "metadata/import/perl/file/spec::file/spec",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports File::Spec",
            "from": [
              {
                "file": 12
              }
            ]
          },
          {
            "id": "metadata/import/perl/file/temp::file/temp",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports File::Temp",
            "from": [
              {
                "file": 12
              }
            ]
          },
          {
            "id": "metadata/import/perl/freezethaw::freezethaw",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports FreezeThaw",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/import/perl/strict::strict",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strict",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/import/perl/test/exception::test/exception",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::Exception",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/perl/test/more::test/more",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::More",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/perl/text/fab::text/fab",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Text::Fab",
            "from": [
              {
                "file": 5
              }
            ]
          },
          {
            "id": "metadata/import/perl/warnings::warnings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports warnings",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/scripted::sigil-variable-decl",
            "conf": 0.8,
            "crit": 2,
            "desc": "Perl sigil variable declaration",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/scripted::subroutine-definition",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl subroutine definition",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/scripted::use-module",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl module import statement",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-4",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"have\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "from": [
              {
                "file": 1
              }
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "from": [
              {
                "file": 1
              }
            ]
          }
        ]
      },
      {
        "ctx": [
          {
            "b": "Aa9l(vp%c]raQq@iYY-svMK]7B-Raph7*Nrgck?=B7DFnBAh89Buo?LB7DFrvrcm1zFa2L3jpY]AV=Sdmn^5QpFJ2}asw\u0026}fF\u003eds3jn12mSJ6KDsZ5?vrS\u0026dB0bHmADL#owN(])wN/d\u003eB7DE)Bz(hdvR/Qpi+h-pz/fbev{%m)z/^aywPzG[y?Xibavw{)miDRZw[u0]zEWm03l{WmBz(hhwftP7aARpday/tcw[+[2A::67z/cXhvrl98d06JvxDQ-8ay/LnBz(1sB8M8vwPz\u0026yaAg+fB7GxkefFwswftw\u003cy\u00260M?v@3cme^=-xwGTD.wO3g0ra]Y:aAqPNB75V(mSJ6KDsXjvxKM9li%(soBZ=F7v@c73wGSxDdiJ%Wd0fchCoy%nw[sCLwO3g0aAIjgw]]FafKk/H3jn12mRMWIeN@QnB7]J8aAhvnz/PMlC{3Nm",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "fGPRWB-FPIp/o\u003eXqB%?\u003cuQ^QXmpezQpG6X?pGx[ZmODPVauZ\u00260gb7yoe?/u]3uHu0aAhvnz/PMlD0+f4A:JA)y?l%-y\u0026sxaaBsCrarR!zC{1HXB7Gf1efDiGx(!x6w].*buUaa=diH+@kWMOWarR^HbXgRgByeT2z/5\u0026)zE:\u003eMats{XzFS)9B0b18w[=c]wfrddx(!x6w].*buUaa=i%)8MarQ",
            "ln": 543,
            "col": 43,
            "line": 19
          },
          {
            "b": "x(W={Bzk]fayYnizE^f@C}GBGavdbXwObv[y\u0026*!gx(W={Bzk]fayX[{x(m#mCwhejaswxYayPvmz!rQ5wPP4GaA8oyx(dY#wnbE]wO=Smvp\u003cQ)AV!^kzE[3dx(mGm3uHu0aywU\u003cw)]*#Bye:1By/GewNP:[AV/YoarR^HzfWlLbW$[dw[u0las7(q",
            "ln": 1141,
            "col": 21,
            "line": 36
          },
          {
            "b": "vpy)6vrl9?yH}^jcM\u003eMoatC0!ed9HxarR^HarR)Kq/uX#x(mMav@c78B-I4ow]zYjxKL%}wPG)PAaK5jp!%FgayO+\u0026wPh:jaAR*CayPq6B.$YcBAnNFx\u003c\u0026bHuKv[#arR^HarS43vpy)6vrl9?yH}=#B8M8vuVf%}wPxdvjW70fBZ=Fuas7q#fKk!",
            "ln": 6352,
            "col": 42,
            "line": 175
          },
          {
            "b": "wPRG[By!#9w]zYjw[=6)aswBBvrt{9tY7-E3lQDlarR^HaBKO7arR^HarR^Hz/xo9az(xDbXyZvasxo0efDiGvrt]+arR^HarR^HarR^Hz/M$hx\u003enzhmpeIQoHSq^ml%sGmn^2VqAt{/vqY$3BrCQnvpQG{zEWH9wmV(}x(4u6cNrkhByuKTas5anzx.dHarR^HarR^HzfWlHv@DmbwO#PjjS[oNaBtkEz!0i(as5Q4auQ]YxG^L!i%)8MarR^HarUfgz/YFjbXyZK3jm)#arR^HarUSCB7=WYDN9Vzy?tm.DUEwcy\u0026%o1uVQr$v@3HvefDiGvrt{t3lQDlarR^Haz2.8y-[6iarR^HarR^HarR^HbY^Kkw?uh=A=kD0B8$YfBAh8kxdb3nz/fVdzGC",
            "ln": 10542,
            "col": 56,
            "line": 280
          },
          {
            "b": "zxK4mwGV5ovpK6}woz{bzF78mzG//jwnb{]aAIDzwmY.4xDO#KByxi5wPR#oBzbxfay/kaB7]J8azk.kB-mWgarR!zC{1wOz/u*Zas82ty?tm.DUmwqB-pYeBywV{EjWS!eIQJ)3jm)#arUxgasH=iw[=c]wfrdfy*?H9AW-bT3lQDlarR^HazCBg",
            "ln": 26026,
            "col": 18,
            "line": 700
          },
          {
            "b": "jV$}\u003ejV$}\u003ejV$}n3l{V(wPR#oAa9=#zGG}xw]zYjbYmVOaA?gfx\u003egT]x(mMaBzb98az#9uwnc6}v@#o)ay/Xby?j-6B0bgmBAhqgBZ[#[e^=VxvJXAAuTE\u003e=Bye#}A+fcgB0b/parR^HzfWlLbY^Kkw?k5IzGvuKkYydLwO#QhdiH+@kWMOW3lQDl",
            "ln": 32246,
            "col": 65,
            "line": 868
          },
          {
            "b": "wPRp2wN/*@z/cXfz/o-eAV/7lavoHTwLuJTz/{dearR^HarR^Hjz5IIBy/FRlVl{?A+Pf1BrAs)gbRfEw]zQfwPx%warR^Hbv$+6uVP^*BzkVh3jn}fwNPa7avFT%lScGLr7P\u003eX3joc.raQq@iYY-svM\u003e]GB0bvsBrC0mBy/rdy*?B1zF786zF9W3wJI2GBn",
            "ln": 40836,
            "col": 10,
            "line": 1112
          },
          {
            "b": "xM4*gwGUz7zEEx[wft@8v@#B6zxJU9aMv{wzfoVpx(E)1azbB#C5Izx\u0026^^NxxKM6}ayX[[zxJF3w[=c]wg/07xLzJgvqG:#Cxj)nazbC3CXHS6wGUV2wPzj1v}YN^vqE6cD2[7sz6i+eaMv{wz*2YjA+P5)vR/P#By/rdy*?A%Bk?.ve*a8nv}W0b",
            "ln": 45695,
            "col": 165,
            "line": 1152
          },
          {
            "b": "BZ]8cxLy%^B-qyACw7M9aAhvtv}x.5x(mMaBzbkdx(m)jBrz#yx([31AV!?pazth3wnC%$xcqqfwGVbmwmoN\u003eaA7\u003cmx([zsv@Dl%x\u003eF$tz/M$fB.\u003e\u0026czF78gB-X:Ix([1",
            "ln": 70074,
            "col": 314,
            "line": 1609
          },
          {
            "b": "aAz48zGGDgwN%!JOGIuMBy/FnxKL^?y?W^1aAIWnxDQ.awnc6}v@#BdwJ{Ies7#+\u0026aARpdayYnhBz(3QHluW#ayPkdA=kw@xDOZExK#67BzbkdAb]JeA=kD0B8#nuaz\u003eLjaMv{wv{%g\u0026aAIErwGTonn-Cn\u003eaARJAxKL^?y?j-hxK@q%x(W={Bzk]fdiJ.Cx(+zhB0b45B9P!?x(\u003eFiB0b45B9O)IzY\u0026[9yH[SfB-I4oBzb98aAIWnxDQ.av{%g\u0026az\u003eLjaA.Tlvru66\u0026^^LvxK@q@z/ff3xlwl6BzkVh\u0026^^Nxz!pblxK@r9A+figz!0v1B8M7wCw7YbwGU=1wPhv3xcuh:OoeBQazC.nwPzV%y-)+fAb]JhwO#P#BzkVhaA7\u003cmBzbkdvqG%}vpTTnA+eV\u0026eOP9wB-YiSz.k{GwPhWdv}x.5\u0026^^Nxw{4{aC{3*sBywW3e*9Y6Cv+@eAX5tSxK#67BzbkdAb]JeA=kD0B8#nuazC)tv@DmbA=k=gwN(]}A=k!qviw3FvK@TCxKM09xKL\u003e0wO#Mix(n0lwNP9(z!pcKFsHaTy\u00260*6xcqqfwGTonn-Cn\u003eazC)TaMv{wwQ4{haARpdaAhvjAb](bwPI{hA]IRuefG4FwO@Siz/65{z!abowO=B0asItBwGTDJvJ^fyv{%g\u0026x(mMaBzbkdk#pc7aARpdzxN}?On@gLzGGDgaARpdaAhvjAb](bwPI{hAV!!6vqfSsFsOqnra]\u0026-wOb\u003e3wGVhgwO@SjxK@r9A+figz!0v1B8M7wv{%l$B7F]9Bzb98aARpday/8czFHweBrCHhByw)3wN(]$",
            "ln": 70734,
            "col": 247,
            "line": 1611
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "thaw"
            ],
            [
              "",
              "safeFreeze"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "index"
            ],
            [
              "",
              "index"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "$fab.out__target_section"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "$fab.cfg__set"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "$fab.cfg__append"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "$fab.NS__set_parents"
            ],
            [
              "",
              "$fab.out__embed"
            ],
            [
              "",
              "$fab.group__start"
            ],
            [
              "",
              "$fab.group__end"
            ],
            [
              "",
              "$fab.include__text"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$fab.group__start"
            ],
            [
              "",
              "$fab.include__text"
            ],
            [
              "",
              "$fab.group__end"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$fab.group__end"
            ],
            [
              "",
              "$fab._handle_error"
            ],
            [
              "",
              "$fab._handle_error"
            ],
            [
              "",
              "index"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "bless"
            ],
            [
              "",
              "$self.cfg__get_prefixed"
            ],
            [
              "",
              "$self.cfg__get"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "$self._process_chunk"
            ],
            [
              "",
              "$self._process_chunk"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$self.cfg__get_prefixed"
            ],
            [
              "",
              "$self.cfg__get"
            ],
            [
              "",
              "_default_error_handler"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "open"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$self.process_string"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self.process_string"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "$self._join_list"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "splice"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "splice"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self._get_key_type"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self._join_list"
            ],
            [
              "",
              "$self._get_sorted_hash_keys"
            ],
            [
              "",
              "$self._join_list"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "reverse"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "reverse"
            ],
            [
              "",
              "die"
            ],
            [
              "",
              "$self.cfg__set"
            ],
            [
              "",
              "$self.cfg__set"
            ],
            [
              "",
              "$self.cfg__set"
            ],
            [
              "",
              "dclone"
            ],
            [
              "",
              "$self.cfg__set"
            ],
            [
              "",
              "dclone"
            ],
            [
              "",
              "dclone"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$self._execute_postponed"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "$self.cfg__get"
            ],
            [
              "",
              "$self.cfg__set"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "$self._expand_section"
            ],
            [
              "",
              "$self._resolve_section"
            ],
            [
              "",
              "$self._expand_section"
            ],
            [
              "",
              "$self._resolve_section"
            ],
            [
              "",
              "FreezeThaw"
            ],
            [
              "",
              "strict"
            ],
            [
              "",
              "warnings"
            ]
          ],
          "mbr": [
            "$fab.NS__set_parents",
            "$fab._handle_error",
            "$fab.cfg__append",
            "$fab.cfg__set",
            "$fab.group__end",
            "$fab.group__start",
            "$fab.include__text",
            "$fab.out__embed",
            "$fab.out__target_section",
            "$self._execute_postponed",
            "$self._expand_section",
            "$self._get_key_type",
            "$self._get_sorted_hash_keys",
            "$self._join_list",
            "$self._process_chunk",
            "$self._resolve_section",
            "$self.cfg__get",
            "$self.cfg__get_prefixed",
            "$self.cfg__set",
            "$self.process_string"
          ],
          "tgt": [
            "$fab.NS__set_parents",
            "$fab._handle_error",
            "$fab.cfg__append",
            "$fab.cfg__set",
            "$fab.group__end",
            "$fab.group__start",
            "$fab.include__text",
            "$fab.out__embed",
            "$fab.out__target_section",
            "$self._execute_postponed",
            "$self._expand_section",
            "$self._get_key_type",
            "$self._get_sorted_hash_keys",
            "$self._join_list",
            "$self._process_chunk",
            "$self._resolve_section",
            "$self.cfg__get",
            "$self.cfg__get_prefixed",
            "$self.cfg__set",
            "$self.process_string",
            "_default_error_handler",
            "bless",
            "dclone",
            "die",
            "index",
            "join",
            "open",
            "push",
            "reverse",
            "safeFreeze",
            "splice",
            "split",
            "substr",
            "thaw",
            "unshift"
          ],
          "metrics": {
            "ast": {
              "op.eq": 15,
              "op.ge": 4,
              "op.gt": 9,
              "op.lt": 6,
              "op.ne": 1,
              "op.add": 5,
              "op.lor": 18,
              "op.mod": 4,
              "op.sub": 25,
              "op.land": 20,
              "op.lnot": 14,
              "max_depth": 24,
              "op.concat": 33,
              "call_count": 135,
              "node_count": 11898,
              "op.floordiv": 45,
              "member_count": 20,
              "op_density.eq": 0,
              "op_density.ge": 0,
              "op_density.gt": 0,
              "op_density.lt": 0,
              "op_density.ne": 0,
              "op_density.add": 0,
              "op_density.lor": 0,
              "op_density.mod": 0,
              "op_density.sub": 0,
              "op_density.land": 0,
              "op_density.lnot": 0,
              "max_array_length": 1,
              "max_concat_chain": 2,
              "max_member_depth": 2,
              "op_density.concat": 0,
              "self_compare_count": 3,
              "op_density.floordiv": 0
            },
            "file": {
              "size": 87356,
              "entropy": 4.96
            },
            "text": {
              "lines": 1955,
              "top_char": 101,
              "tab_count": 10,
              "digit_ratio": 0.01,
              "space_count": 16440,
              "char_entropy": 4.96,
              "mixed_indent": 1,
              "unique_chars": 105,
              "top_char_null": 0,
              "import_density": 0.15,
              "lines_over_200": 50,
              "lines_over_500": 16,
              "string_density": 0.1,
              "top_char_ratio": 0.08,
              "ascii_art_lines": 18,
              "avg_line_length": 43.68,
              "max_line_length": 904,
              "non_ascii_ratio": 0.01,
              "empty_line_ratio": 0.27,
              "last_line_length": 4,
              "long_token_count": 5,
              "whitespace_ratio": 0.21,
              "identifier_density": 0.02,
              "line_length_stddev": 74.37,
              "max_whitespace_run": 12,
              "unusual_whitespace": 6,
              "normalized_import_count": 0.07,
              "normalized_string_count": 4.32,
              "repeated_char_sequences": 252,
              "suspicious_comment_ratio": 0.03,
              "trailing_whitespace_lines": 1,
              "normalized_unique_identifiers": 3.66
            },
            "binds": {
              "count": 25
            },
            "binary": {
              "peak_region_bytes": 43324,
              "peak_region_entropy": 5.19
            },
            "source": {
              "class_count": 1,
              "function_count": 40
            },
            "imports": {
              "count": 3,
              "third_party_count": 3,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 4141,
              "count": 191,
              "avg_length": 21.68,
              "max_length": 103,
              "avg_entropy": 2.93,
              "empty_count": 15,
              "entropy_stddev": 1.32
            },
            "comments": {
              "chars": 7599,
              "count": 124,
              "lines": 124,
              "high_entropy": 4,
              "to_code_ratio": 0.07
            },
            "functions": {
              "count": 41
            },
            "identifiers": {
              "count": 40,
              "unique": 40,
              "avg_length": 15.85,
              "max_length": 31,
              "min_length": 3,
              "avg_entropy": 3.18,
              "reuse_ratio": 1,
              "length_stddev": 6.26,
              "high_entropy_count": 7,
              "high_entropy_ratio": 0.18,
              "all_lowercase_ratio": 0.98,
              "underscore_prefix_count": 13
            }
          }
        },
        "id": 1,
        "mol": "H(F)",
        "path": "Text-Fab-0.03.tar.gz!!Text-Fab-0.03/lib/Text/Fab.pm",
        "pid": 0,
        "risk": 2,
        "sha": "873386d4b359bed5e21a38a1b525ca78abb1843c850e2d06507dd628600a78e5",
        "size": 87356,
        "traits": [
          {
            "id": "micro-behaviors/fs/read/file/full::perl-slurp-local-record-separator",
            "conf": 0.94,
            "crit": 3,
            "desc": "Perl slurps a filehandle",
            "spans": [
              [
                10721,
                15
              ]
            ]
          },
          {
            "id": "metadata/import/perl/freezethaw::freezethaw",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports FreezeThaw",
            "spans": [
              [
                254,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/strict::strict",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strict",
            "spans": [
              [
                35,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/warnings::warnings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports warnings",
            "spans": [
              [
                47,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::sigil-variable-decl",
            "conf": 0.8,
            "crit": 2,
            "desc": "Perl sigil variable declaration",
            "spans": [
              [
                57,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::subroutine-definition",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl subroutine definition",
            "spans": [
              [
                591,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::use-module",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl module import statement",
            "spans": [
              [
                31,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                177,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                234,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-3",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"that\"",
            "spans": [
              [
                32294,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-4",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"have\"",
            "spans": [
              [
                45743,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                6400,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                1189,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                26074,
                0
              ]
            ]
          }
        ],
        "type": "perl"
      },
      {
        "ctx": [
          {
            "b": "B-RapB98Cpv@%^tB-RapCvtJfx(mN8i%{aKwGT@-B96D7o(C5-i%{aKwGT@-B96D7mr\u0026rNAcb/jzAwhFB7DE[wQ5qTi.0K!i%(sqB7FY%yByMfwQ5qTi.0K!cN?a:3t\u003e5hbXyE]auZ\u0026DwQ5qTi.0K!eK15-Cpj[43tBM\u0026uVfZdbXyE]efDrtwQ5qTi.0K!cN?a:3t\u003e5hbX.dnB-YwYjS(\u003cHcQ*=#cP.UWByxi5wPRp2wN/*@z/cW-3rgXMB0bgravdQ!bxNvmxjVf(B7F\u003c6x(v(iljcX9x(+zhB09!43l%b0vJW@Vx(k52zddc@3pNYT3m6j(vJW/RraQq@iYY-svL6=YwP]KKi%)lBvpy/LAb](bwPI{1A@",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "wiagrwo/KKefDrcxLzo[avy6+By/uicOcw/raQb)au8t7nP5iMA+PS7zEWl2CwhejaA8BmA=L(8wHw]*3jpS}as7VsAclmZauZ?\u003ebxNvmxjVf(B7F\u003c6x(v(ivSb!5azCZol0OpLwO\u003e)0vSb!5azCZok{ww$bXyE]auZ\u0026DwQ5qTi.0K!eK15-Cpj[4",
            "ln": 2459,
            "col": 24,
            "line": 66
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "use_ok"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "isa_ok"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.assemble"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "Text::Fab.new.cfg__get"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "substr"
            ],
            [
              "",
              "$fab.cfg__set"
            ],
            [
              "",
              "index"
            ],
            [
              "",
              "index"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "ok"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "Text::Fab.new.process_string"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "Text::Fab.new.process_string"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.cfg__append"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "lives_ok"
            ],
            [
              "",
              "$fab.process_string"
            ],
            [
              "",
              "is_deeply"
            ],
            [
              "",
              "$fab.cfg__get"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab.group__start"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab.group__end"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "Text::Fab.new.process_string"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "done_testing"
            ],
            [
              "",
              "Test::Exception"
            ],
            [
              "",
              "Test::More"
            ],
            [
              "",
              "Text::Fab"
            ],
            [
              "",
              "strict"
            ],
            [
              "",
              "warnings"
            ]
          ],
          "mbr": [
            "$fab.assemble",
            "$fab.cfg__append",
            "$fab.cfg__get",
            "$fab.cfg__set",
            "$fab.group__end",
            "$fab.group__start",
            "$fab.process_string",
            "Text::Fab.new",
            "Text::Fab.new.cfg__get",
            "Text::Fab.new.process_string"
          ],
          "tgt": [
            "$fab.assemble",
            "$fab.cfg__append",
            "$fab.cfg__get",
            "$fab.cfg__set",
            "$fab.group__end",
            "$fab.group__start",
            "$fab.process_string",
            "Text::Fab.new",
            "Text::Fab.new.cfg__get",
            "Text::Fab.new.process_string",
            "done_testing",
            "index",
            "is",
            "is_deeply",
            "isa_ok",
            "join",
            "lives_ok",
            "ok",
            "substr",
            "throws_ok",
            "use_ok"
          ],
          "metrics": {
            "ast": {
              "op.eq": 2,
              "op.add": 2,
              "op.sub": 2,
              "op.lnot": 1,
              "max_depth": 15,
              "call_count": 67,
              "node_count": 1458,
              "member_count": 10,
              "op_density.eq": 0,
              "op_density.add": 0,
              "op_density.sub": 0,
              "op_density.lnot": 0,
              "max_array_length": 1,
              "max_concat_chain": 2,
              "max_member_depth": 3
            },
            "file": {
              "size": 4437,
              "entropy": 5.31
            },
            "text": {
              "lines": 109,
              "top_char": 101,
              "digit_ratio": 0.02,
              "space_count": 512,
              "char_entropy": 5.31,
              "unique_chars": 84,
              "top_char_null": 0,
              "import_density": 4.59,
              "string_density": 0.61,
              "top_char_ratio": 0.07,
              "avg_line_length": 39.71,
              "max_line_length": 135,
              "empty_line_ratio": 0.14,
              "last_line_length": 15,
              "whitespace_ratio": 0.14,
              "identifier_density": 0.14,
              "line_length_stddev": 34.69,
              "max_whitespace_run": 6,
              "normalized_import_count": 0.48,
              "normalized_string_count": 6.32,
              "normalized_unique_identifiers": 0.15
            },
            "binds": {
              "count": 10
            },
            "binary": {
              "peak_region_bytes": 4437,
              "peak_region_entropy": 5.42
            },
            "imports": {
              "count": 5,
              "third_party_count": 5,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 1704,
              "count": 66,
              "avg_length": 25.82,
              "max_length": 115,
              "avg_entropy": 3.28,
              "empty_count": 2,
              "entropy_stddev": 0.92
            },
            "identifiers": {
              "count": 15,
              "unique": 1,
              "avg_length": 9,
              "max_length": 9,
              "min_length": 9,
              "avg_entropy": 2.95,
              "reuse_ratio": 0.07
            }
          }
        },
        "id": 5,
        "mol": "Md",
        "path": "Text-Fab-0.03.tar.gz!!Text-Fab-0.03/t/01-basics.t",
        "pid": 0,
        "risk": 2,
        "sha": "a2579fac123a90eb7a934af2dd4979934815fc3e83305da32ddb39465a932f8b",
        "size": 4437,
        "traits": [
          {
            "id": "metadata/file/profile/identifier-population::low-identifier-reuse",
            "conf": 0.7,
            "crit": 3,
            "desc": "Low identifier reuse ratio"
          },
          {
            "id": "metadata/import/perl/strict::strict",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strict",
            "spans": [
              [
                4,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/test/exception::test/exception",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::Exception",
            "spans": [
              [
                46,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/test/more::test/more",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::More",
            "spans": [
              [
                30,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/text/fab::text/fab",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Text::Fab",
            "spans": [
              [
                67,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/warnings::warnings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports warnings",
            "spans": [
              [
                16,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::sigil-variable-decl",
            "conf": 0.8,
            "crit": 2,
            "desc": "Perl sigil variable declaration",
            "spans": [
              [
                100,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::use-module",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl module import statement",
            "spans": [
              [
                0,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                2507,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-7",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                197,
                0
              ]
            ]
          }
        ],
        "type": "perl"
      },
      {
        "ctx": [
          {
            "b": "B-RapB98Cpv@%^tB-RapCvtJfx(mN8i%{aKwGT@-B96D7o(C5-i%{aKwGT@-B96D7mr\u0026rNAcb/jzAwhFB7DE[wQ5qTi.0K!i%(sqB7FY%yByMfwQ5qTi.0K!cN?a:3t\u003e5hbXyE]uU0OTauZ\u0026DwQ5qTi.0K!eK15-Cpj[43m6j(vQAUOxdVqxq^S)MwPRo#vrb{%BAn\u0026TlUHgIwg5]JcS1k(wO#Pqdlv\u003eZw)]dQwmoa5k2b3-uVP!2uVoB]wO#Qhc)}\u00261",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "lS(=InKD\u0026RpdN/KnMm#JlQ-TV3lQDlaszkwy?tnkzFiQ4x()^3v}u=[x\u003equdCwhejavPT8sWL\u003eOlTJzWnjuAFr6:nDmjge73uP%4z*cnfz!*Fxas7McvQAUOxdVqxq^S)MwPRo#vrb{%BAn\u0026Tm@\u00263QwkDYPwO#PqefDrcxLzo[cN*f^aAqAPmpez+",
            "ln": 293,
            "col": 62,
            "line": 13
          },
          {
            "b": "wPw]mBZ[])B8$@oy\u00261wtB76nnwO#0]z/YSgxcpV1x(mD)A:J:cBz#wAaA8cuBzbkdB97\u00262yBpL)3jprZzE)f%wPI%czF7vDi%\u003e",
            "ln": 4635,
            "col": 16,
            "line": 123
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "use_ok"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_dag.NS__set_parents"
            ],
            [
              "",
              "$fab_dag.NS__set_parents"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab_dag.NS__set_parents"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab_dag.NS__set_parents"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_multi.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_multi.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_multi.out__target_section"
            ],
            [
              "",
              "$fab_multi.out__embed"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_multi.out__embed"
            ],
            [
              "",
              "$fab_multi.NS__set_parents"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab_multi.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_missing.out__target_section"
            ],
            [
              "",
              "$fab_missing.out__embed"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab_missing.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_loop.out__target_section"
            ],
            [
              "",
              "$fab_loop.out__embed"
            ],
            [
              "",
              "$fab_loop.out__target_section"
            ],
            [
              "",
              "$fab_loop.out__embed"
            ],
            [
              "",
              "throws_ok"
            ],
            [
              "",
              "$fab_loop.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_asif.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_asif.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_asif.NS__set_parents"
            ],
            [
              "",
              "$fab_asif.NS__set_parents"
            ],
            [
              "",
              "$fab_asif.out__target_section"
            ],
            [
              "",
              "$fab_asif.out__embed"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab_asif.assemble"
            ],
            [
              "",
              "$fab_asif.out__target_section"
            ],
            [
              "",
              "$fab_asif.out__embed"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab_asif.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_blind.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_blind.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_blind.NS__set_parents"
            ],
            [
              "",
              "$fab_blind.NS__set_parents"
            ],
            [
              "",
              "$fab_blind.cfg__set"
            ],
            [
              "",
              "$fab_blind.out__target_section"
            ],
            [
              "",
              "$fab_blind.out__embed"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "$fab_blind.assemble"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_directive.process_string"
            ],
            [
              "",
              "is_deeply"
            ],
            [
              "",
              "$fab_directive.cfg__get"
            ],
            [
              "",
              "Text::Fab.new"
            ],
            [
              "",
              "$fab_nest.out__target_section"
            ],
            [
              "",
              "push"
            ],
            [
              "",
              "$fab_nest.out__target_section"
            ],
            [
              "",
              "$fab_nest.out__embed"
            ],
            [
              "",
              "$fab_nest.out__target_section"
            ],
            [
              "",
              "$fab_nest.out__embed"
            ],
            [
              "",
              "$fab_nest.cfg__set"
            ],
            [
              "",
              "$fab_nest.cfg__set"
            ],
            [
              "",
              "$fab_nest.assemble"
            ],
            [
              "",
              "is"
            ],
            [
              "",
              "is_deeply"
            ],
            [
              "",
              "done_testing"
            ],
            [
              "",
              "Test::Exception"
            ],
            [
              "",
              "Test::More"
            ],
            [
              "",
              "Text::Fab"
            ],
            [
              "",
              "strict"
            ],
            [
              "",
              "warnings"
            ]
          ],
          "mbr": [
            "$fab_asif.NS__set_parents",
            "$fab_asif.assemble",
            "$fab_asif.out__embed",
            "$fab_asif.out__target_section",
            "$fab_blind.NS__set_parents",
            "$fab_blind.assemble",
            "$fab_blind.cfg__set",
            "$fab_blind.out__embed",
            "$fab_blind.out__target_section",
            "$fab_dag.NS__set_parents",
            "$fab_directive.cfg__get",
            "$fab_directive.process_string",
            "$fab_loop.assemble",
            "$fab_loop.out__embed",
            "$fab_loop.out__target_section",
            "$fab_missing.assemble",
            "$fab_missing.out__embed",
            "$fab_missing.out__target_section",
            "$fab_multi.NS__set_parents",
            "$fab_multi.assemble",
            "$fab_multi.out__embed",
            "$fab_multi.out__target_section",
            "$fab_nest.assemble",
            "$fab_nest.cfg__set",
            "$fab_nest.out__embed",
            "$fab_nest.out__target_section",
            "Text::Fab.new"
          ],
          "tgt": [
            "$fab_asif.NS__set_parents",
            "$fab_asif.assemble",
            "$fab_asif.out__embed",
            "$fab_asif.out__target_section",
            "$fab_blind.NS__set_parents",
            "$fab_blind.assemble",
            "$fab_blind.cfg__set",
            "$fab_blind.out__embed",
            "$fab_blind.out__target_section",
            "$fab_dag.NS__set_parents",
            "$fab_directive.cfg__get",
            "$fab_directive.process_string",
            "$fab_loop.assemble",
            "$fab_loop.out__embed",
            "$fab_loop.out__target_section",
            "$fab_missing.assemble",
            "$fab_missing.out__embed",
            "$fab_missing.out__target_section",
            "$fab_multi.NS__set_parents",
            "$fab_multi.assemble",
            "$fab_multi.out__embed",
            "$fab_multi.out__target_section",
            "$fab_nest.assemble",
            "$fab_nest.cfg__set",
            "$fab_nest.out__embed",
            "$fab_nest.out__target_section",
            "Text::Fab.new",
            "done_testing",
            "is",
            "is_deeply",
            "push",
            "throws_ok",
            "use_ok"
          ],
          "metrics": {
            "ast": {
              "max_depth": 14,
              "call_count": 76,
              "node_count": 1737,
              "member_count": 27,
              "max_array_length": 1,
              "max_member_depth": 2
            },
            "file": {
              "size": 4713,
              "entropy": 5.23
            },
            "text": {
              "lines": 125,
              "top_char": 101,
              "digit_ratio": 0,
              "space_count": 305,
              "char_entropy": 5.23,
              "unique_chars": 70,
              "top_char_null": 0,
              "import_density": 4,
              "string_density": 0.99,
              "top_char_ratio": 0.07,
              "avg_line_length": 36.7,
              "max_line_length": 89,
              "empty_line_ratio": 0.26,
              "last_line_length": 15,
              "whitespace_ratio": 0.09,
              "identifier_density": 0.06,
              "line_length_stddev": 28.67,
              "max_whitespace_run": 1,
              "normalized_import_count": 0.45,
              "normalized_string_count": 11.09,
              "normalized_unique_identifiers": 0.14
            },
            "binary": {
              "peak_region_bytes": 4713,
              "peak_region_entropy": 5.33
            },
            "imports": {
              "count": 5,
              "third_party_count": 5,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 1559,
              "count": 124,
              "avg_length": 12.57,
              "max_length": 71,
              "avg_entropy": 2.67,
              "entropy_stddev": 0.83
            },
            "identifiers": {
              "count": 8,
              "unique": 1,
              "avg_length": 9,
              "max_length": 9,
              "min_length": 9,
              "avg_entropy": 2.95,
              "reuse_ratio": 0.13
            }
          }
        },
        "id": 13,
        "mol": "Md",
        "path": "Text-Fab-0.03.tar.gz!!Text-Fab-0.03/t/09-inheritance-and-embed.t",
        "pid": 0,
        "risk": 2,
        "sha": "270882401bb4599f70b4e8f2705f5031c542ec27d850a9008e0c127244d0c1f1",
        "size": 4713,
        "traits": [
          {
            "id": "metadata/file/profile/identifier-population::low-identifier-reuse",
            "conf": 0.7,
            "crit": 3,
            "desc": "Low identifier reuse ratio"
          },
          {
            "id": "metadata/import/perl/strict::strict",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports strict",
            "spans": [
              [
                4,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/test/exception::test/exception",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::Exception",
            "spans": [
              [
                46,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/test/more::test/more",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Test::More",
            "spans": [
              [
                30,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/text/fab::text/fab",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports Text::Fab",
            "spans": [
              [
                67,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/perl/warnings::warnings",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports warnings",
            "spans": [
              [
                16,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::sigil-variable-decl",
            "conf": 0.8,
            "crit": 2,
            "desc": "Perl sigil variable declaration",
            "spans": [
              [
                100,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/scripted::use-module",
            "conf": 0.85,
            "crit": 2,
            "desc": "Perl module import statement",
            "spans": [
              [
                0,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                4683,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-6",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"with\"",
            "spans": [
              [
                341,
                0
              ]
            ]
          }
        ],
        "type": "perl"
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 796,
              "entropy": 4.54
            },
            "binary": {
              "peak_region_bytes": 796,
              "peak_region_entropy": 4.54
            },
            "registry": {
              "is_deprecated": 0,
              "publisher_verified": 1
            }
          }
        },
        "id": 15,
        "path": "Text-Fab@0.03.registry.json",
        "pid": 0,
        "rel": "registry",
        "role": "sidecar",
        "sha": "9d185ed4a635fc975afbbd2775a8320e515e2857497d74341c0c89bb7c5e7b1b",
        "size": 796,
        "type": "registry"
      }
    ],
    "rev": "17dc6",
    "v": "8"
  }
}