| Path-Class-URI documentation | Contained in the Path-Class-URI distribution. |
Path::Class::URI - Serializes and deserializes Path::Class objects as file:// URI
use Path::Class;
use Path::Class::URI;
my $file = file('bob', 'john.txt');
my $uri = $file->uri; # file:bob/john.txt
file('', 'tmp', 'bar.txt')->uri; # file:///tmp/bar.txt
my $file = file_from_uri("file:///tmp/bar.txt"); # or URI::file object
$fh = $file->open;
Path::Class::URI is an extension to Path::Class to serialize file path from and to file:// form URI objects.
This module encodes and decodes non URI-safe characters using its literal byte encodings. If you call uri methods on Win32 Path::File objects, you'll get local filename encodings.
If you want to avoid that and always use UTF-8 filename encodings in URI, see Path::Class::Unicode bundled in this distribution.
$uri = $file->uri; $uri = $dir->uri;
returns URI object representing Path::Class file and directory.
$file = Path::Class::File->from_uri($uri); $dir = Path::Class::Dir->from_uri($uri);
Deserializes URI object (or string) into Path::Class objects.
Shortcuts for those from_uri methods. Exported by default.
Tatsuhiko Miyagawa <miyagawa@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Path-Class-URI documentation | Contained in the Path-Class-URI distribution. |
package Path::Class::URI; use strict; use 5.008_001; our $VERSION = '0.04'; use URI; use URI::file; use Exporter::Lite; use Path::Class; use Scalar::Util qw(blessed); our @EXPORT = qw( file_from_uri dir_from_uri ); sub file_from_uri { Path::Class::File->from_uri(shift); } sub dir_from_uri { Path::Class::Dir->from_uri(shift); } sub Path::Class::Entity::uri { my $self = shift; my $path = $self->stringify; $path =~ tr!\\!/! if $^O eq "MSWin32"; if ($self->is_absolute) { return URI->new("file://$path"); } else { return URI->new("file:$path"); } } sub Path::Class::Entity::from_uri { my($class, $uri) = @_; $uri = URI->new($uri) unless blessed $uri;; $class->new( $uri->file('unix') ); } 1; __END__