GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Mojo::URL(3) User Contributed Perl Documentation Mojo::URL(3)

Mojo::URL - Uniform Resource Locator

  use Mojo::URL;

  # Parse
  my $url = Mojo::URL->new('http://sri:foo@example.com:3000/foo?foo=bar#23');
  say $url->scheme;
  say $url->userinfo;
  say $url->host;
  say $url->port;
  say $url->path;
  say $url->query;
  say $url->fragment;

  # Build
  my $url = Mojo::URL->new;
  $url->scheme('http');
  $url->host('example.com');
  $url->port(3000);
  $url->path('/foo/bar');
  $url->query(foo => 'bar');
  $url->fragment(23);
  say "$url";

Mojo::URL implements a subset of RFC 3986 <https://tools.ietf.org/html/rfc3986>, RFC 3987 <https://tools.ietf.org/html/rfc3987> and the URL Living Standard <https://url.spec.whatwg.org> for Uniform Resource Locators with support for IDNA and IRIs.

Mojo::URL implements the following attributes.

  my $base = $url->base;
  $url     = $url->base(Mojo::URL->new);

Base of this URL, defaults to a Mojo::URL object.

  "http://example.com/a/b?c"
  Mojo::URL->new("/a/b?c")->base(Mojo::URL->new("http://example.com"))->to_abs;

  my $fragment = $url->fragment;
  $url         = $url->fragment('♥mojolicious♥');

Fragment part of this URL.

  # "yada"
  Mojo::URL->new('http://example.com/foo?bar=baz#yada')->fragment;

  my $host = $url->host;
  $url     = $url->host('127.0.0.1');

Host part of this URL.

  # "example.com"
  Mojo::URL->new('http://sri:t3st@example.com:8080/foo')->host;

  my $port = $url->port;
  $url     = $url->port(8080);

Port part of this URL.

  # "8080"
  Mojo::URL->new('http://sri:t3st@example.com:8080/foo')->port;

  my $scheme = $url->scheme;
  $url       = $url->scheme('http');

Scheme part of this URL.

  # "http"
  Mojo::URL->new('http://example.com/foo')->scheme;

  my $info = $url->userinfo;
  $url     = $url->userinfo('root:♥');

Userinfo part of this URL.

  # "sri:t3st"
  Mojo::URL->new('https://sri:t3st@example.com/foo')->userinfo;

Mojo::URL inherits all methods from Mojo::Base and implements the following new ones.

  my $url2 = $url->clone;

Return a new Mojo::URL object cloned from this URL.

  my $host_port = $url->host_port;
  $url          = $url->host_port('example.com:8080');

Normalized version of "host" and "port".

  # "xn--n3h.net:8080"
  Mojo::URL->new('http://☃.net:8080/test')->host_port;

  # "example.com"
  Mojo::URL->new('http://example.com/test')->host_port;

  my $ihost = $url->ihost;
  $url      = $url->ihost('xn--bcher-kva.ch');

Host part of this URL in punycode format.

  # "xn--n3h.net"
  Mojo::URL->new('http://☃.net')->ihost;

  # "example.com"
  Mojo::URL->new('http://example.com')->ihost;

  my $bool = $url->is_abs;

Check if URL is absolute.

  # True
  Mojo::URL->new('http://example.com')->is_abs;
  Mojo::URL->new('http://example.com/test/index.html')->is_abs;

  # False
  Mojo::URL->new('test/index.html')->is_abs;
  Mojo::URL->new('/test/index.html')->is_abs;
  Mojo::URL->new('//example.com/test/index.html')->is_abs;

  my $url = Mojo::URL->new;
  my $url = Mojo::URL->new('http://127.0.0.1:3000/foo?f=b&baz=2#foo');

Construct a new Mojo::URL object and "parse" URL if necessary.

  $url = $url->parse('http://127.0.0.1:3000/foo/bar?fo=o&baz=23#foo');

Parse relative or absolute URL.

  # "/test/123"
  $url->parse('/test/123?foo=bar')->path;

  # "example.com"
  $url->parse('http://example.com/test/123?foo=bar')->host;

  # "sri@example.com"
  $url->parse('mailto:sri@example.com')->path;

  my $password = $url->password;

Password part of "userinfo".

  # "s3cret"
  Mojo::URL->new('http://isabel:s3cret@mojolicious.org')->password;

  # "s:3:c:r:e:t"
  Mojo::URL->new('http://isabel:s:3:c:r:e:t@mojolicious.org')->password;

  my $path = $url->path;
  $url     = $url->path('foo/bar');
  $url     = $url->path('/foo/bar');
  $url     = $url->path(Mojo::Path->new);

Path part of this URL, relative paths will be merged with "merge" in Mojo::Path, defaults to a Mojo::Path object.

  # "test"
  Mojo::URL->new('http://example.com/test/Mojo')->path->parts->[0];

  # "/test/DOM/HTML"
  Mojo::URL->new('http://example.com/test/Mojo')->path->merge('DOM/HTML');

  # "http://example.com/DOM/HTML"
  Mojo::URL->new('http://example.com/test/Mojo')->path('/DOM/HTML');

  # "http://example.com/test/DOM/HTML"
  Mojo::URL->new('http://example.com/test/Mojo')->path('DOM/HTML');

  # "http://example.com/test/Mojo/DOM/HTML"
  Mojo::URL->new('http://example.com/test/Mojo/')->path('DOM/HTML');

  my $path_query = $url->path_query;
  $url           = $url->path_query('/foo/bar?a=1&b=2');

Normalized version of "path" and "query".

  # "/test?a=1&b=2"
  Mojo::URL->new('http://example.com/test?a=1&b=2')->path_query;

  # "/"
  Mojo::URL->new('http://example.com/')->path_query;

  my $proto = $url->protocol;

Normalized version of "scheme".

  # "http"
  Mojo::URL->new('HtTp://example.com')->protocol;

  my $query = $url->query;
  $url      = $url->query({merge => 'to'});
  $url      = $url->query([append => 'with']);
  $url      = $url->query(replace => 'with');
  $url      = $url->query('a=1&b=2');
  $url      = $url->query(Mojo::Parameters->new);

Query part of this URL, key/value pairs in an array reference will be appended with "append" in Mojo::Parameters, and key/value pairs in a hash reference merged with "merge" in Mojo::Parameters, defaults to a Mojo::Parameters object.

  # "2"
  Mojo::URL->new('http://example.com?a=1&b=2')->query->param('b');

  # "a=2&b=2&c=3"
  Mojo::URL->new('http://example.com?a=1&b=2')->query->merge(a => 2, c => 3);

  # "http://example.com?a=2&c=3"
  Mojo::URL->new('http://example.com?a=1&b=2')->query(a => 2, c => 3);

  # "http://example.com?a=2&a=3"
  Mojo::URL->new('http://example.com?a=1&b=2')->query(a => [2, 3]);

  # "http://example.com?a=2&b=2&c=3"
  Mojo::URL->new('http://example.com?a=1&b=2')->query({a => 2, c => 3});

  # "http://example.com?b=2"
  Mojo::URL->new('http://example.com?a=1&b=2')->query({a => undef});

  # "http://example.com?a=1&b=2&a=2&c=3"
  Mojo::URL->new('http://example.com?a=1&b=2')->query([a => 2, c => 3]);

  my $abs = $url->to_abs;
  my $abs = $url->to_abs(Mojo::URL->new('http://example.com/foo'));

Return a new Mojo::URL object cloned from this relative URL and turn it into an absolute one using "base" or provided base URL.

  # "http://example.com/foo/baz.xml?test=123"
  Mojo::URL->new('baz.xml?test=123')
    ->to_abs(Mojo::URL->new('http://example.com/foo/bar.html'));

  # "http://example.com/baz.xml?test=123"
  Mojo::URL->new('/baz.xml?test=123')
    ->to_abs(Mojo::URL->new('http://example.com/foo/bar.html'));

  # "http://example.com/foo/baz.xml?test=123"
  Mojo::URL->new('//example.com/foo/baz.xml?test=123')
    ->to_abs(Mojo::URL->new('http://example.com/foo/bar.html'));

  my $str = $url->to_string;

Turn URL into a string. Note that "userinfo" will not be included for security reasons.

  # "http://mojolicious.org"
  Mojo::URL->new->scheme('http')->host('mojolicious.org')->to_string;

  # "http://mojolicious.org"
  Mojo::URL->new('http://daniel:s3cret@mojolicious.org')->to_string;

  my $str = $url->to_unsafe_string;

Same as "to_string", but includes "userinfo".

  # "http://daniel:s3cret@mojolicious.org"
  Mojo::URL->new('http://daniel:s3cret@mojolicious.org')->to_unsafe_string;

  my $username = $url->username;

Username part of "userinfo".

  # "isabel"
  Mojo::URL->new('http://isabel:s3cret@mojolicious.org')->username;

Mojo::URL overloads the following operators.

  my $bool = !!$url;

Always true.

  my $str = "$url";

Alias for "to_string".

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.
2021-12-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.