File-VirtualPath
view release on metacpan or search on metacpan
lib/File/VirtualPath.pm view on Meta::CPAN
=head2 Content of fat main program "Aardvark.pm"
package Aardvark;
use strict;
use warnings;
use File::VirtualPath;
sub main {
my (undef, $project_dir) = @_;
my $prefs = &get_prefs( $project_dir->child_path_obj( 'config.pl' ) );
&do_work( $prefs, $project_dir );
}
sub get_prefs {
my ($project_dir) = @_;
my $real_filename = $project_dir->physical_path_string();
my $prefs = do $real_filename;
defined( $prefs ) or do {
my $virtual_fn = $project_dir->path_string();
die "Can't get Aardvark prefs from file '$virtual_fn': $!";
};
return( $prefs );
}
sub do_work {
my ($prefs, $project_dir) = @_;
my ($lbl_a, $lbl_b, $lbl_c) = ($prefs->{a}, $prefs->{b}, $prefs->{c});
my $data_source = $prefs->{'sourcefile'};
open( SOURCE, $project_dir->physical_child_path_string( $data_source ) );
while( my $line = <SOURCE> ) {
my ($a, $b, $c) = split( "\t", $line );
print "File contains: $lbl_a='$a', $lbl_b='$b', $lbl_c='$c'\n";
}
close( SOURCE );
}
1;
=head2 Content of settings file "config.pl"
$rh_prefs = {
sourcefile => 'mydata.txt',
a => 'name',
b => 'phone',
c => 'date',
};
=head1 DESCRIPTION
This Perl 5 object class implements a portable abstraction of a resource path,
examples of which include file-system paths like "/usr/bin/perl" and URLs like
( run in 0.710 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )