Module::Bundled::Files(3pm) | User Contributed Perl Documentation | Module::Bundled::Files(3pm) |
Module::Bundled::Files - Access files bundled with Module
Version 0.03
Access files installed with your module without needing to specify an install location on the target filesystem.
In Build.PL:
my $build = new Module::Build(...); map{$build->add_build_element($_);} qw{txt html tmpl}; # installs all .txt, .html and .tmpl files found in the lib/ tree
Create files:
Build.PL lib/ My/ Module.pm Module/ index.html data.txt form.tmpl
use base qw{Module::Bundled::Files}; if($self->mbf_exists('data.txt')){...} my $filename = $self->mbf_path('data.txt'); # $filename = '/usr/local/share/perl/5.8.7/My/Module/data.txt'; open my $fh, '<', $filename or die $@; my $fh = $self->mbf_open('data.txt'); while(<$fh>) { ... } my $data = $self->mbf_read('data.txt');
use Module::Bundled::Files qw{:all}; my $object = new Other::Object; if(mf_exists($other,'otherfile.txt')){...} my $filename = mbf_path($object,'otherfile.txt'); open my $fh, '<', $filename or die $@; my $fh = mbf_open($object,'otherfile.txt'); while(<$fh>) { ... } my $data = mbf_read($object,'otherfile.txt');
This module provides an simple method of accessing files that need to be bundled with a module.
For example, a module My::Module, which needs to access a separate file data.txt.
In your development directory you would place your data.txt in your lib/My/Module/ directory.
lib/ My/ Module.pm Module/ data.txt
Using add_build_element(...) in your Build.PL file allows the data.txt file to be installed in the same relative location.
The file(s) can then be accessed using the mbf_* functions provided by this module.
The following functions can be exported if you will not be using the Object-Oriented Interface.
:all mbf_validate mbf_dir mbf_exists mbf_path mbf_open mbf_read
Returns true if the filename does not contain illegal sequences (i.e. '..')
Dies if filename is invalid.
Returns the path of the directory where all files would be installed.
The non-OO interface requires an object reference or module name as the only parameter.
Returns true of the named file has been bundled with the module.
The non-OO interface requires an object reference or module name as the first parameter.
Returns the full path to the named file. Dies if the file does not exist.
Will look for file in inherited classes (by reading @ISA) if the file is not found for the derived class. @ISA navigation is the same as per Perl searching for methods. See Class::ISA for more details.
The non-OO interface requires an object reference or module name as the first parameter.
Returns an open file handle for the named file. Dies if the file does not exist.
The non-OO interface requires an object reference or module name as the first parameter.
Returns the content of the named file. Dies if the file does not exist.
The non-OO interface requires an object reference or module name as the first parameter.
Paul Campbell, "<kemitix@gmail.com>"
Please report any bugs or feature requests to "bug-module-bundled-files@rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Module-Bundled-Files>. I will be notified, and then you will automatically be notified of progress on your bug as I make changes.
#=head1 ACKNOWLEDGEMENTS
Copyright 2005 Paul Campbell, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2022-12-07 | perl v5.36.0 |