Breaks up a URI string into its component
parts. An 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 undef.
No sensible value is returned if this function is called in a scalar
context.
Puts together a URI string from its parts.
Missing parts are signaled by passing 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.