/usr/share/perl5/URI/Split.pm is in liburi-perl 1.73-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | package URI::Split;
use strict;
use warnings;
our $VERSION = '1.73';
$VERSION = eval $VERSION;
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<undef> 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<undef>.
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<undef> 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<URI>, L<URI::Escape>
=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
|