Codebase list libmodule-bundled-files-perl / HEAD
HEAD

Tree @HEAD (Download .tar.gz)

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

VERSION
    Version 0.03

SYNOPSIS
    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
    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
    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
  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
    Paul Campbell, "<kemitix@gmail.com>"

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