NAME URI::AnyService - Simple /etc/services-driven URI objects VERSION version v0.90.0 SYNOPSIS use URI; use URI::AnyService; my $uri = URI->new('smtp://example.com'); say $uri->has_recognized_scheme; # !!0 say $uri->port; # '' my $uas = URI::AnyService->new('smtp://example.com'); say $uas->has_recognized_scheme; # !!1 say $uas->port; # 25 DESCRIPTION This module creates simple URI-based objects for protocols that it doesn't yet have defined. It works just like URI, except it just supports the generic servers methods, and not anything scheme-specific. In other words, most of the methods that http/https objects support. Port numbers are looked up from a /etc/services file. If you don't have a /etc/services file, one will be provided for you, but there's no guarantee that it will be up-to-date or apply to your specific protocol. This allows you to use a URL like smtp://example.com without having to set a default port in the URL. GLOBAL VARIABLES %SERVICE_PORTS This is a hash of schemes/protocols to port numbers. It is loaded from the /etc/services file, as soon as you use this module. Most of the time, you shouldn't mess with this. But, if there is some new protocol that you need to add that happens to not exist in your /etc/services files, you can do so with: $URI::AnyService::SERVICE_PORTS{'my-protocol'} = 1234; This variable is not exportable, so you need to use the full package syntax. USE OPTIONS :InternalServicesData use URI::AnyService ':InternalServicesData'; This will force the internal services data to be loaded, even if the /etc/services file is available. This is useful for testing, or if you know that the /etc/services files on your servers are not consistent. Please note that there are no guarantees that the internal data is up-to-date or accurate. It's mostly used as a "last resort" fallback. CONSTRUCTOR URI::AnyService->new($str); URI::AnyService->new($str, $scheme); This constructor is very similiar to URI's version, including the somewhat-legacy two parameter form. In most cases, you should just use the whole URL string. A scheme that was defined in the services file is required. AUTHOR Grant Street Group COPYRIGHT AND LICENSE This software is Copyright (c) 2025 by Grant Street Group. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)