/usr/share/perl5/URI
NameSizeModeActions
file/-0755rm
urn/-0755rm
data.pm33900644editdlrm
Escape.pm70610644editdlrm
file.pm97610644editdlrm
ftp.pm10560644editdlrm
gopher.pm24280644editdlrm
Heuristic.pm65270644editdlrm
http.pm4250644editdlrm
https.pm1440644editdlrm
IRI.pm7940644editdlrm
ldap.pm29240644editdlrm
ldapi.pm4400644editdlrm
ldaps.pm1440644editdlrm
mailto.pm12760644editdlrm
mms.pm1250644editdlrm
news.pm14540644editdlrm
nntp.pm1270644editdlrm
nntps.pm1440644editdlrm
pop.pm12070644editdlrm
QueryParam.pm48610644editdlrm
rlogin.pm1290644editdlrm
rsync.pm2070644editdlrm
rtsp.pm1250644editdlrm
rtspu.pm1260644editdlrm
sftp.pm980644editdlrm
sip.pm16950644editdlrm
sips.pm1430644editdlrm
snews.pm1720644editdlrm
Split.pm23530644editdlrm
ssh.pm1750644editdlrm
telnet.pm1280644editdlrm
tn3270.pm1280644editdlrm
URL.pm54870644editdlrm
urn.pm21750644editdlrm
WithBase.pm38620644editdlrm
_foreign.pm1070644editdlrm
_generic.pm58220644editdlrm
_idna.pm20790644editdlrm
_ldap.pm32490644editdlrm
_login.pm2310644editdlrm
_punycode.pm56220644editdlrm
_query.pm25310644editdlrm
_segment.pm4160644editdlrm
_server.pm37240644editdlrm
_userpass.pm10340644editdlrm
Edit: /usr/share/perl5/URI/Split.pm (2353B)
package URI::Split; use strict; use warnings; our $VERSION = '5.09'; use Exporter 5.57 'import'; our @EXPORT_OK = qw(uri_split uri_join); use URI::Escape (); sub uri_split { return $_[0] =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,; } sub uri_join { my($scheme, $auth, $path, $query, $frag) = @_; my $uri = defined($scheme) ? "$scheme:" : ""; $path = "" unless defined $path; if (defined $auth) { $auth =~ s,([/?\#]), URI::Escape::escape_char($1),eg; $uri .= "//$auth"; $path = "/$path" if length($path) && $path !~ m,^/,; } elsif ($path =~ m,^//,) { $uri .= "//"; # XXX force empty auth } unless (length $uri) { $path =~ s,(:), URI::Escape::escape_char($1),e while $path =~ m,^[^:/?\#]+:,; } $path =~ s,([?\#]), URI::Escape::escape_char($1),eg; $uri .= $path; if (defined $query) { $query =~ s,(\#), URI::Escape::escape_char($1),eg; $uri .= "?$query"; } $uri .= "#$frag" if defined $frag; $uri; } 1; __END__ =head1 NAME URI::Split - Parse and compose URI strings =head1 SYNOPSIS use URI::Split qw(uri_split uri_join); ($scheme, $auth, $path, $query, $frag) = uri_split($uri); $uri = uri_join($scheme, $auth, $path, $query, $frag); =head1 DESCRIPTION Provides functions to parse and compose URI strings. The following functions are provided: =over =item ($scheme, $auth, $path, $query, $frag) = uri_split($uri) Breaks up a URI string into its component parts. An C value is returned for those parts that are not present. The $path part is always present (but can be the empty string) and is thus never returned as C. No sensible value is returned if this function is called in a scalar context. =item $uri = uri_join($scheme, $auth, $path, $query, $frag) Puts together a URI string from its parts. Missing parts are signaled by passing C for the corresponding argument. Minimal escaping is applied to parts that contain reserved chars that would confuse a parser. For instance, any occurrence of '?' or '#' in $path is always escaped, as it would otherwise be parsed back as a query or fragment. =back =head1 SEE ALSO L, L =head1 COPYRIGHT Copyright 2003, Gisle Aas This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut