{"id":28646743,"url":"https://github.com/harisekhon/lib","last_synced_at":"2025-06-13T02:06:48.963Z","repository":{"id":6150836,"uuid":"7380082","full_name":"HariSekhon/lib","owner":"HariSekhon","description":"Perl Utility Library for my other repos","archived":false,"fork":false,"pushed_at":"2025-03-14T19:37:01.000Z","size":1969,"stargazers_count":18,"open_issues_count":8,"forks_count":33,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-14T20:31:42.105Z","etag":null,"topics":["ambari","biginsights","cassandra","cloudera","cloudera-manager","datastax","elasticsearch","hacktoberfest","hbase","library","mapr","mongodb","perl","redis","riak","solr","unit-test","unit-testing","unit-tests","zookeeper"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/in/HariSekhon","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HariSekhon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-12-30T20:30:51.000Z","updated_at":"2025-03-14T19:37:05.000Z","dependencies_parsed_at":"2024-01-30T23:09:16.736Z","dependency_job_id":"4abb5880-8c02-41b6-aa57-0225296b7db5","html_url":"https://github.com/HariSekhon/lib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HariSekhon/lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HariSekhon%2Flib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HariSekhon%2Flib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HariSekhon%2Flib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HariSekhon%2Flib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HariSekhon","download_url":"https://codeload.github.com/HariSekhon/lib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HariSekhon%2Flib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259565562,"owners_count":22877347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ambari","biginsights","cassandra","cloudera","cloudera-manager","datastax","elasticsearch","hacktoberfest","hbase","library","mapr","mongodb","perl","redis","riak","solr","unit-test","unit-testing","unit-tests","zookeeper"],"created_at":"2025-06-13T02:06:48.350Z","updated_at":"2025-06-13T02:06:48.929Z","avatar_url":"https://github.com/HariSekhon.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hari Sekhon - Perl Library\n\n[![GitHub stars](https://img.shields.io/github/stars/harisekhon/lib?logo=github)](https://github.com/HariSekhon/lib/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/harisekhon/lib?logo=github)](https://github.com/HariSekhon/lib/network)\n[![LineCount](https://sloc.xyz/github/HariSekhon/lib/?badge-bg-color=2081C2)](https://github.com/boyter/scc/)\n[![Cocomo](https://sloc.xyz/github/HariSekhon/lib/?badge-bg-color=2081C2\u0026category=cocomo)](https://github.com/boyter/scc/)\n[![License](https://img.shields.io/github/license/HariSekhon/lib)](https://github.com/HariSekhon/lib/blob/master/LICENSE)\n[![My LinkedIn](https://img.shields.io/badge/LinkedIn%20Profile-HariSekhon-blue?logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIGZpbGw9IiNmZmZmZmYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW48L3RpdGxlPjxwYXRoIGQ9Ik0yMC40NDcgMjAuNDUyaC0zLjU1NHYtNS41NjljMC0xLjMyOC0uMDI3LTMuMDM3LTEuODUyLTMuMDM3LTEuODUzIDAtMi4xMzYgMS40NDUtMi4xMzYgMi45Mzl2NS42NjdIOS4zNTFWOWgzLjQxNHYxLjU2MWguMDQ2Yy40NzctLjkgMS42MzctMS44NSAzLjM3LTEuODUgMy42MDEgMCA0LjI2NyAyLjM3IDQuMjY3IDUuNDU1djYuMjg2ek01LjMzNyA3LjQzM2MtMS4xNDQgMC0yLjA2My0uOTI2LTIuMDYzLTIuMDY1IDAtMS4xMzguOTItMi4wNjMgMi4wNjMtMi4wNjMgMS4xNCAwIDIuMDY0LjkyNSAyLjA2NCAyLjA2MyAwIDEuMTM5LS45MjUgMi4wNjUtMi4wNjQgMi4wNjV6bTEuNzgyIDEzLjAxOUgzLjU1NVY5aDMuNTY0djExLjQ1MnpNMjIuMjI1IDBIMS43NzFDLjc5MiAwIDAgLjc3NCAwIDEuNzI5djIwLjU0MkMwIDIzLjIyNy43OTIgMjQgMS43NzEgMjRoMjAuNDUxQzIzLjIgMjQgMjQgMjMuMjI3IDI0IDIyLjI3MVYxLjcyOUMyNCAuNzc0IDIzLjIgMCAyMi4yMjIgMGguMDAzeiIvPjwvc3ZnPgo=)](https://www.linkedin.com/in/HariSekhon/)\n[![GitHub Last Commit](https://img.shields.io/github/last-commit/HariSekhon/lib?logo=github)](https://github.com/HariSekhon/lib/commits/master)\n\u003c!-- measure not found\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=HariSekhon_lib)\n--\u003e\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/b74a91c19a5845e2961533a5933381db)](https://www.codacy.com/app/harisekhon/lib)\n[![CodeFactor](https://www.codefactor.io/repository/github/harisekhon/lib/badge)](https://www.codefactor.io/repository/github/harisekhon/lib)\n[![SonarCloud](https://github.com/HariSekhon/lib/actions/workflows/sonarcloud.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/sonarcloud.yaml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=HariSekhon_lib)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=HariSekhon_lib)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=HariSekhon_lib)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=HariSekhon_lib)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=HariSekhon_lib\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=HariSekhon_lib)\n\n[![Linux](https://img.shields.io/badge/OS-Linux-blue?logo=linux)](https://github.com/HariSekhon/lib#hari-sekhon---perl-library)\n[![Mac](https://img.shields.io/badge/OS-Mac-blue?logo=apple)](https://github.com/HariSekhon/lib#hari-sekhon---perl-library)\n[![Docker](https://img.shields.io/badge/container-Docker-blue?logo=docker\u0026logoColor=white)](https://hub.docker.com/r/harisekhon/github/)\n[![Dockerfile](https://img.shields.io/badge/repo-Dockerfiles-blue?logo=docker\u0026logoColor=white)](https://github.com/HariSekhon/Dockerfiles)\n[![DockerHub Pulls](https://img.shields.io/docker/pulls/harisekhon/centos-github?label=DockerHub%20pulls\u0026logo=docker\u0026logoColor=white)](https://hub.docker.com/r/harisekhon/github)\n[![DockerHub Build Automated](https://img.shields.io/docker/automated/harisekhon/centos-github?logo=docker\u0026logoColor=white)](https://hub.docker.com/r/harisekhon/centos-github)\n\u003c!-- these badges don't work any more\n[![Docker Build Status](https://img.shields.io/docker/cloud/build/harisekhon/centos-github?logo=docker\u0026logoColor=white)](https://hub.docker.com/r/harisekhon/centos-github/builds)\n[![MicroBadger](https://images.microbadger.com/badges/image/harisekhon/github.svg)](http://microbadger.com/#/images/harisekhon/github)\n--\u003e\n\n[![CI Builds Overview](https://img.shields.io/badge/CI%20Builds-Overview%20Page-blue?logo=circleci)](https://harisekhon.github.io/CI-CD/)\n[![Jenkins](https://img.shields.io/badge/Jenkins-ready-blue?logo=jenkins\u0026logoColor=white)](https://github.com/HariSekhon/lib/blob/master/Jenkinsfile)\n[![Concourse](https://img.shields.io/badge/Concourse-ready-blue?logo=concourse)](https://github.com/HariSekhon/lib/blob/master/cicd/.concourse.yml)\n[![GoCD](https://img.shields.io/badge/GoCD-ready-blue?logo=go)](https://github.com/HariSekhon/lib/blob/master/cicd/.gocd.yml)\n[![TeamCity](https://img.shields.io/badge/TeamCity-ready-blue?logo=teamcity)](https://github.com/HariSekhon/TeamCity-CI)\n\n[![CircleCI](https://circleci.com/gh/HariSekhon/lib.svg?style=svg)](https://circleci.com/gh/HariSekhon/lib)\n[![BuildKite](https://img.shields.io/buildkite/ee85ef275ba64807fc2efce47336b0e0d92a1cba7fcc94b584/master?label=BuildKite\u0026logo=buildkite)](https://buildkite.com/hari-sekhon/lib)\n[![AppVeyor](https://img.shields.io/appveyor/build/harisekhon/lib/master?logo=appveyor\u0026label=AppVeyor)](https://ci.appveyor.com/project/HariSekhon/lib/branch/master)\n[![Drone](https://img.shields.io/drone/build/HariSekhon/lib/master?logo=drone\u0026label=Drone)](https://cloud.drone.io/HariSekhon/lib)\n[![Codefresh](https://g.codefresh.io/api/badges/pipeline/harisekhon/GitHub%2Flib?branch=master\u0026key=eyJhbGciOiJIUzI1NiJ9.NWU1MmM5OGNiM2FiOWUzM2Y3ZDZmYjM3.O69674cW7vYom3v5JOGKXDbYgCVIJU9EWhXUMHl3zwA\u0026type=cf-1)](https://g.codefresh.io/pipelines/edit/new/builds?id=5e58e2c43953b7316b4b7903\u0026pipeline=lib\u0026projects=GitHub\u0026projectId=5e52ca8ea284e00f882ea992\u0026context=github\u0026filter=page:1;pageSize:10;timeFrameStart:week)\n[![Cirrus CI](https://img.shields.io/cirrus/github/HariSekhon/lib/master?logo=Cirrus%20CI\u0026label=Cirrus%20CI)](https://cirrus-ci.com/github/HariSekhon/lib)\n[![Semaphore](https://harisekhon.semaphoreci.com/badges/lib.svg)](https://harisekhon.semaphoreci.com/projects/lib)\n[![Buddy](https://img.shields.io/badge/Buddy-ready-1A86FD?logo=buddy)](https://github.com/HariSekhon/lib/blob/master/buddy.yml)\n[![Shippable](https://img.shields.io/badge/Shippable-legacy-lightgrey?logo=jfrog\u0026label=Shippable)](https://github.com/HariSekhon/lib/blob/master/shippable.yml)\n[![Travis CI](https://img.shields.io/badge/TravisCI-ready-blue?logo=travis\u0026label=Travis%20CI)](https://github.com/HariSekhon/lib/blob/master/.travis.yml)\n\n[![Azure DevOps](https://dev.azure.com/harisekhon/GitHub/_apis/build/status/HariSekhon.lib?branchName=master)](https://dev.azure.com/harisekhon/GitHub/_build/latest?definitionId=3\u0026branchName=master)\n[![GitLab Pipeline](https://img.shields.io/badge/GitLab%20CI-legacy-lightgrey?logo=gitlab)](https://gitlab.com/HariSekhon/lib/pipelines)\n[![BitBucket Pipeline](https://img.shields.io/badge/Bitbucket%20CI-legacy-lightgrey?logo=bitbucket)](https://bitbucket.org/harisekhon/lib/addon/pipelines/home#!/)\n[![AWS CodeBuild](https://img.shields.io/badge/AWS%20CodeBuild-ready-blue?logo=amazon%20aws)](https://github.com/HariSekhon/lib/blob/master/cicd/buildspec.yml)\n[![GCP Cloud Build](https://img.shields.io/badge/GCP%20Cloud%20Build-ready-blue?logo=google%20cloud\u0026logoColor=white)](https://github.com/HariSekhon/lib/blob/master/cicd/cloudbuild.yaml)\n\n[![Repo on GitHub](https://img.shields.io/badge/repo-GitHub-2088FF?logo=github)](https://github.com/HariSekhon/lib)\n[![Repo on GitLab](https://img.shields.io/badge/repo-GitLab-FCA121?logo=gitlab)](https://gitlab.com/HariSekhon/lib)\n[![Repo on Azure DevOps](https://img.shields.io/badge/repo-Azure%20DevOps-0078D7?logo=azure%20devops)](https://dev.azure.com/harisekhon/GitHub/_git/lib)\n[![Repo on BitBucket](https://img.shields.io/badge/repo-BitBucket-0052CC?logo=bitbucket)](https://bitbucket.org/HariSekhon/lib)\n\n[![ShellCheck](https://github.com/HariSekhon/lib/actions/workflows/shellcheck.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/shellcheck.yaml)\n[![JSON](https://github.com/HariSekhon/lib/actions/workflows/json.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/json.yaml)\n[![YAML](https://github.com/HariSekhon/lib/actions/workflows/yaml.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/yaml.yaml)\n[![XML](https://github.com/HariSekhon/lib/actions/workflows/xml.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/xml.yaml)\n[![Markdown](https://github.com/HariSekhon/lib/actions/workflows/markdown.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/markdown.yaml)\n[![Validation](https://github.com/HariSekhon/lib/actions/workflows/validate.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/validate.yaml)\n[![Kics](https://github.com/HariSekhon/lib/actions/workflows/kics.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/kics.yaml)\n[![Grype](https://github.com/HariSekhon/lib/actions/workflows/grype.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/grype.yaml)\n[![Semgrep](https://github.com/HariSekhon/lib/actions/workflows/semgrep.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/semgrep.yaml)\n[![Semgrep Cloud](https://github.com/HariSekhon/lib/actions/workflows/semgrep-cloud.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/semgrep-cloud.yaml)\n[![Trivy](https://github.com/HariSekhon/lib/actions/workflows/trivy.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/trivy.yaml)\n\n[![GitHub Actions Ubuntu](https://github.com/HariSekhon/lib/workflows/GitHub%20Actions%20Ubuntu/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22GitHub+Actions+Ubuntu%22)\n[![Mac](https://github.com/HariSekhon/lib/actions/workflows/mac.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/mac.yaml)\n[![Mac 11](https://github.com/HariSekhon/lib/actions/workflows/mac_11.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/mac_11.yaml)\n[![Mac 12](https://github.com/HariSekhon/lib/actions/workflows/mac_12.yaml/badge.svg)](https://github.com/HariSekhon/lib/actions/workflows/mac_12.yaml)\n[![Ubuntu](https://github.com/HariSekhon/lib/workflows/Ubuntu/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Ubuntu%22)\n[![Ubuntu 20.04](https://github.com/HariSekhon/lib/workflows/Ubuntu%2020.04/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Ubuntu+20.04%22)\n[![Ubuntu 22.04](https://github.com/HariSekhon/lib/workflows/Ubuntu%2022.04/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Ubuntu+22.04%22)\n[![Debian](https://github.com/HariSekhon/lib/workflows/Debian/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Debian%22)\n[![Debian 10](https://github.com/HariSekhon/lib/workflows/Debian%2010/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Debian+10%22)\n[![Debian 11](https://github.com/HariSekhon/lib/workflows/Debian%2011/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Debian+11%22)\n[![Debian 12](https://github.com/HariSekhon/lib/workflows/Debian%2012/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Debian+12%22)\n[![CentOS](https://github.com/HariSekhon/lib/workflows/CentOS/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22CentOS%22)\n[![CentOS 7](https://github.com/HariSekhon/lib/workflows/CentOS%207/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22CentOS+7%22)\n[![CentOS 8](https://github.com/HariSekhon/lib/workflows/CentOS%208/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22CentOS+8%22)\n[![Fedora](https://github.com/HariSekhon/lib/workflows/Fedora/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Fedora%22)\n[![Alpine](https://github.com/HariSekhon/lib/workflows/Alpine/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Alpine%22)\n[![Alpine 3](https://github.com/HariSekhon/lib/workflows/Alpine%203/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Alpine+3%22)\n\n[![Perl versions](https://img.shields.io/badge/Perl-5.10+-39457E?logo=perl)](https://github.com/HariSekhon/lib)\n[![Perl](https://github.com/HariSekhon/lib/workflows/Perl/badge.svg)](https://github.com/HariSekhon/lib/actions?query=workflow%3A%22Perl%22)\n\nPerl library, full of lots of validation code and utility functions.\n\nNeeded for a lot of the programs I've written over the years. In fact my current main library was actually cobbled together from lots of pieces of code I wrote over the years since I found myself reusing common things over and over. This drastically reduces the amount of code and effort required to write new robust well validated code which is why it's used extensively throughout the portions of code you'll find on my GitHub account, especially all the Advanced Nagios Plugins Collection which I've been developing for many years since 2006\n\nHari Sekhon\n\nCloud \u0026 Big Data Contractor, United Kingdom\n\n[![My LinkedIn](https://img.shields.io/badge/LinkedIn%20Profile-HariSekhon-blue?logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIGZpbGw9IiNmZmZmZmYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW48L3RpdGxlPjxwYXRoIGQ9Ik0yMC40NDcgMjAuNDUyaC0zLjU1NHYtNS41NjljMC0xLjMyOC0uMDI3LTMuMDM3LTEuODUyLTMuMDM3LTEuODUzIDAtMi4xMzYgMS40NDUtMi4xMzYgMi45Mzl2NS42NjdIOS4zNTFWOWgzLjQxNHYxLjU2MWguMDQ2Yy40NzctLjkgMS42MzctMS44NSAzLjM3LTEuODUgMy42MDEgMCA0LjI2NyAyLjM3IDQuMjY3IDUuNDU1djYuMjg2ek01LjMzNyA3LjQzM2MtMS4xNDQgMC0yLjA2My0uOTI2LTIuMDYzLTIuMDY1IDAtMS4xMzguOTItMi4wNjMgMi4wNjMtMi4wNjMgMS4xNCAwIDIuMDY0LjkyNSAyLjA2NCAyLjA2MyAwIDEuMTM5LS45MjUgMi4wNjUtMi4wNjQgMi4wNjV6bTEuNzgyIDEzLjAxOUgzLjU1NVY5aDMuNTY0djExLjQ1MnpNMjIuMjI1IDBIMS43NzFDLjc5MiAwIDAgLjc3NCAwIDEuNzI5djIwLjU0MkMwIDIzLjIyNy43OTIgMjQgMS43NzEgMjRoMjAuNDUxQzIzLjIgMjQgMjQgMjMuMjI3IDI0IDIyLjI3MVYxLjcyOUMyNCAuNzc0IDIzLjIgMCAyMi4yMjIgMGguMDAzeiIvPjwvc3ZnPgo=)](https://www.linkedin.com/in/HariSekhon/)\n\u003cbr\u003e*(you're welcome to connect with me on LinkedIn)*\n\n## Build + Unit Tests\n\n```shell\nmake \u0026\u0026\nmake test\n```\n\n[Continuous Integration](https://travis-ci.org/HariSekhon/lib) is run on this repo to build and unit test it (Test::More, almost 800 unit tests).\n\n### Configuration\n\nStrict validations include host/domain/FQDNs using TLDs which are populated from the official IANA list, a snapshot of which is shipped as part of this project.\n\nTo update the bundled official IANA TLD list with the latest valid TLDs do\n\n```shell\nmake tld\n```\n\n#### Custom TLDs\n\nIf using bespoke internal domains such as `.local`, `.intranet`, `.vm`, `.cloud` etc. that aren't part of the official IANA TLD list then this is additionally supported via a custom configuration file [resources/custom_tlds.txt](https://github.com/HariSekhon/lib/blob/master/resources/custom_tlds.txt) containing one TLD per line, with support for # comment prefixes. Just add your bespoke internal TLD to the file and it will then pass the host/domain/fqdn validations.\n\n#### IO::Socket::SSL doesn't respect ignoring self-signed certs in recent version(s) eg. 2.020\n\nRecent version(s) of IO::Socket::SSL (2.020) seem to fail to respect options to ignore self-signed certs. The workaround is to create the hidden touch file below in the same top-level directory as the library to make it include and use Net::SSL instead of IO::Socket::SSL.\n\n```shell\ntouch .use_net_ssl\n```\n\n## Related Repositories\n\nPython and Java ports of this library can be found below - both with higher levels of code coverage testing:\n\n- [Java library](https://github.com/HariSekhon/lib-java)\n\n- [Python library](https://github.com/HariSekhon/pylib)\n\n[git.io/perl-lib](https://git.io/perl-lib)\n\n## More Core Repos\n\n\u003c!-- OTHER_REPOS_START --\u003e\n\n### Knowledge\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Knowledge-Base\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Knowledge-Base)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Diagrams-as-Code\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Diagrams-as-Code)\n\n\u003c!--\n\nNot support on GitHub Markdown:\n\n\u003ciframe src=\"https://raw.githubusercontent.com/HariSekhon/HariSekhon/main/knowledge.md\" width=\"100%\" height=\"500px\"\u003e\u003c/iframe\u003e\n\nDoes nothing:\n\n\u003cembed src=\"https://raw.githubusercontent.com/HariSekhon/HariSekhon/main/knowledge.md\" width=\"100%\" height=\"500px\" /\u003e\n\n--\u003e\n\n### DevOps Code\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=DevOps-Bash-tools\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/DevOps-Bash-tools)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=DevOps-Python-tools\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/DevOps-Python-tools)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=DevOps-Perl-tools\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/DevOps-Perl-tools)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=DevOps-Golang-tools\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/DevOps-Golang-tools)\n\n\u003c!--\n[![Gist Card](https://github-readme-stats.vercel.app/api/gist?id=f8f551332440f1ca8897ff010e363e03)](https://gist.github.com/HariSekhon/f8f551332440f1ca8897ff010e363e03)\n--\u003e\n\n### Containerization\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Kubernetes-configs\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Kubernetes-configs)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Dockerfiles\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Dockerfiles)\n\n### CI/CD\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=GitHub-Actions\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/GitHub-Actions)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Jenkins\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Jenkins)\n\n### DBA - SQL\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=SQL-scripts\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/SQL-scripts)\n\n### DevOps Reloaded\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Nagios-Plugins\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Nagios-Plugins)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=HAProxy-configs\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/HAProxy-configs)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Terraform\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Terraform)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Packer-templates\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Packer-templates)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Nagios-Plugin-Kafka\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Nagios-Plugin-Kafka)\n\n### Templates\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Templates\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Templates)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Template-repo\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Template-repo)\n\n### Misc\n\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Spotify-tools\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Spotify-tools)\n[![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=HariSekhon\u0026repo=Spotify-playlists\u0026theme=ambient_gradient\u0026description_lines_count=3)](https://github.com/HariSekhon/Spotify-playlists)\n\nThe rest of my original source repos are\n[here](https://github.com/HariSekhon?tab=repositories\u0026q=\u0026type=source\u0026language=\u0026sort=stargazers).\n\nPre-built Docker images are available on my [DockerHub](https://hub.docker.com/u/harisekhon/).\n\n\u003c!-- 1x1 pixel counter to record hits --\u003e\n![](https://hit.yhype.me/github/profile?user_id=2211051)\n\n\u003c!-- OTHER_REPOS_END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharisekhon%2Flib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharisekhon%2Flib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharisekhon%2Flib/lists"}