Module::Bundled::Files - Access files bundled with Module


Module-Bundled-Files documentation  | view source Contained in the Module-Bundled-Files distribution.

Index


NAME

Top

Module::Bundled::Files - Access files bundled with Module

VERSION

Top

Version 0.03

SYNOPSIS

Top

Access files installed with your module without needing to specify an install location on the target filesystem.

Setup

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

Object-Oriented Interface

  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');

Non-Object-Oriented Interface

  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');

DESCRIPTION

Top

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 seperate 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.

EXPORT

Top

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

FUNCTIONS

Top

mbf_validate(FILENAME)

Returns true if the filename does not contain illegal sequences (i.e. '..')

Dies if filename is invalid.

mbf_dir([MODULE])

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.

mbf_exists([MODULE,] FILENAME)

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.

mbf_path([MODULE,] FILENAME)

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.

mbf_open([MODULE,] FILENAME)

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.

mbf_read([MODULE,] FILENAME)

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.

AUTHOR

Top

Paul Campbell, <kemitix@gmail.com>

BUGS

Top

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 & LICENSE

Top


Module-Bundled-Files documentation  | view source Contained in the Module-Bundled-Files distribution.