HTML-Location
view release on metacpan or search on metacpan
lib/HTML/Location.pm view on Meta::CPAN
package HTML::Location;
=pod
=head1 NAME
HTML::Location - Working with disk to URI file mappings (deprecated: see URI::ToDisk)
=head1 STATUS
As correctly noted by several users, C<HTML::Location> is a really stupid
name for this module. I apologise, I was new to the whole CPAN game at the
time I first wrote it.
B<This module has been relocated> to L<URI::ToDisk>. This module will
remain indefinately for back-compatibility, but should otherwise be
B<considered deprecated>.
Please convert your code to the otherwise identical L<URI::ToDisk> at
your leisure.
=head1 SYNOPSIS
# We have a directory on disk that is accessible via a web server
my $authors = HTML::Location->new( '/var/www/AUTHORS', 'http://ali.as/AUTHORS' );
# We know where a particular generated file needs to go
my $about = $authors->catfile( 'A', 'AD', 'ADAMK', 'about.html' );
# Save the file to disk
my $file = $about->path;
open( FILE, ">$file" ) or die "open: $!";
print FILE, $content;
close FILE;
# Show the user where to see the file
my $uri = $about->uri;
print "Author information is at $uri\n";
=head1 DESCRIPTION
In several process relating to working with the web, we may need to keep
track of an area of disk that maps to a particular URL. From this location,
we should be able to derived both a filesystem path and URL for any given
directory or file under this location that we might need to work with.
=head2 Implementation
Internally each C<HTML::Location> object contains both a filesystem path,
which is altered using L<File::Spec>, and a L<URI> object. When making a
change, the path section of the URI is altered using <File::Spec::Unix>.
=head2 Method Calling Conventions
The main functional methods, such as C<catdir> and C<catfile>, do B<not>
modify the original object, instead returning a new object containing the
new location.
This means that it should be used in a somewhat similar way to L<File::Spec>.
# The File::Spec way
my $path = '/some/path';
$path = File::Spec->catfile( $path, 'some', 'file.txt' );
# The HTML::Location way
my $location = HTML::Location->new( '/some/path', 'http://foo.com/blah' );
$location = $location->catfile( 'some', 'file.txt' );
OK, well it's not exactly THAT close, but you get the idea. It also allows you
to do method chaining, which is basically
HTML::Location->new( '/foo', 'http://foo.com/' )->catfile( 'bar.txt' )->uri
Which may seem a little trivial now, but I expect it to get more useful later.
It also means you can do things like this.
( run in 1.862 second using v1.01-cache-2.11-cpan-71847e10f99 )