App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Feature/Data.pm view on Meta::CPAN
package App::Framework::Feature::Data ;
=head1 NAME
App::Framework::Feature::Data - Handle application setup data
=head1 SYNOPSIS
# Data feature is loaded by default as if the script contained:
use App::Framework '+Data' ;
=head1 DESCRIPTION
System feature that provides the application core with access to the setup information stored
in the __DATA__ section.
The __DATA__ section at the end of the script is used by the application framework to allow the script developer to define
various settings for his/her script. This setup is split into "headed" sections of the form:
[ <section name> ]
<settings>
In general, the <section name> is the name of a field value in the application, and <settings> is some text that the field will be set to. Sections
of this type are:
=over 4
=item B<[SUMMARY]> - Application summary text
A single line summary of the application. Used for man pages and usage summary.
(Stored in the application's I<summary> field).
=item B<[DESCRIPTION]> - Application description text
Multiple line description of the application. Used for man pages.
(Stored in the application's I<description> field).
=item B<[SYNOPSIS]> - Application synopsis [I<optional>]
Multiple line synopsis of the application usage. By default the application framework creates this if it is not specified.
(Stored in the application's I<synopsis> field).
=item B<[NAME]> - Application name [I<optional>]
Name of the application usage. By default the application framework creates this if it is not specified.
(Stored in the application's I<name> field).
=back
__DATA__ sections that have special meaning are:
=over 4
=item B<[OPTIONS]> - Application command line options
These are fully described in L<App::Framework::Features::Options>.
If no options are specified, then only those created by the application framework will be defined.
=item B<[ARGS]> - Application command line arguments [I<optional>]
These are fully described in L<App::Framework::Features::Args>.
=back
=head2 Named Data
After the settings (described above), one or more extra data areas can be created by starting that area with a new __DATA__ line.
Each defined data area is named 'data1', 'data2' and so on. These data areas are user-defined multi line text that can be accessed
by the object's accessor method L</data>, for example:
my $data = $app->data('data1') ;
Alternatively, the user-defined data section can be arbitrarily named by appending a text name after __DATA__. For example, the definition:
__DATA__
[DESCRIPTION]
An example
__DATA__ test.txt
some text
__DATA__ a_bit_of_sql.sql
DROP TABLE IF EXISTS `listings2`;
leads to the use of the defined data areas as:
my $file = $app->data('text.txt') ;
# or
$file = $app->data('data1') ;
my $sql = $app->data('a_bit_of_sql.sql') ;
# or
$file = $app->Data('data2') ;
=head2 Variable Expansion
The data text can contain variables, defined using the standard Perl format:
$<name>
${<name>}
When the data is used, the variable is expanded and replaced with a suitable value. The value will be looked up from a variety of possible sources:
object fields (where the variable name matches the field name) or environment variables.
The variable name is looked up in the following order, the first value found with a matching name is used:
=over 4
=item *
( run in 0.458 second using v1.01-cache-2.11-cpan-e1769b4cff6 )