{
  "@context": "https://spdx.org/rdf/3.0.1/spdx-context.jsonld",
  "@graph": [
    {
      "@id": "_:creationInfo_1",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd2"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/additionalToolSPDXRef-gnrtd3"
      ],
      "created": "2026-10-02T04:15:47Z"
    },
    {
      "@id": "_:creationInfo_0",
      "type": "CreationInfo",
      "specVersion": "3.0.1",
      "createdBy": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd0"
      ],
      "createdUsing": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/additionalToolSPDXRef-gnrtd1"
      ],
      "created": "2026-10-02T04:15:47Z"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72234",
      "type": "Relationship",
      "relationshipType": "hasConcludedLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72235"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72233",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72237",
      "type": "Relationship",
      "relationshipType": "hasDeclaredLicense",
      "to": [
        "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72238"
      ],
      "from": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72233",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72238",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "(Artistic-1.0-Perl OR GPL-1.0-or-later)",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72235",
      "type": "simplelicensing_LicenseExpression",
      "simplelicensing_licenseExpression": "(Artistic-1.0-Perl OR GPL-1.0-or-later)",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72236",
      "type": "Organization",
      "name": "http://openeuler.org",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72233",
      "type": "software_Package",
      "software_copyrightText": "",
      "suppliedBy": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/SPDXRef-gnrtd72236",
      "software_downloadLocation": "NOASSERTION",
      "summary": "Safely and cleanly create closures via string eval",
      "software_packageVersion": "0:0.14-2.oe2609",
      "software_homePage": "https://metacpan.org/release/Eval-Closure",
      "description": "String eval is often used for dynamic code generation. For instance, Moose\nuses it heavily, to generate inlined versions of accessors and\nconstructors, which speeds code up at runtime by a significant amount.\nString eval is not without its issues however - it's difficult to control\nthe scope it's used in (which determines which variables are in scope\ninside the eval), and it's easy to miss compilation errors, since eval\ncatches them and sticks them in $@ instead.",
      "name": "perl-Eval-Closure-help",
      "software_sourceInfo": "acquired package info from repodata DB: repodata/19d54a93ffbada0d8891adcbefe41a882ee7f08ec9d32c6bee1353a910c81e32-primary.sqlite.bz2",
      "software_packageUrl": "pkg:rpm/perl-Eval-Closure-help@0.14-2.oe2609?arch=noarch&epoch=0&upstream=perl-Eval-Closure-0.14-2.oe2609.src.rpm",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/additionalToolSPDXRef-gnrtd1",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_0"
    },
    {
      "spdxId": "https://anchore.com/syft/dir/repo/openeuler/openEuler-26.09/everything/x86_64-d20ca2c2-3788-4a6e-b0ed-9fccfc716ab9-specv3/additionalToolSPDXRef-gnrtd3",
      "type": "Tool",
      "name": "syft-[not provided]",
      "creationInfo": "_:creationInfo_1"
    }
  ]
}