Inline::Mason - Inline Mason Script
package MY::Mason; use Inline::Mason 'as_subs'; our @ISA = qw(Inline::Mason); print Inline::Mason::generate('HELLO'); print Inline::Mason::HELLO(); print HELLO(); print NIFTY(lang => 'Perl'); __END__ __HELLO__ % my $noun = 'World'; Hello <% $noun %>! How are ya? __NIFTY__ <% $ARGS{lang} %> is nifty!
This module enables you to embed mason scripts in your perl code. Using it is simple, much is shown in the above.
Invoking Inline::Mason with it may let you treat virtual files as subroutines and call them directly.
If it is passed, the module will not spontaneously load mason scripts until you explicitly load them.
Create mason scripts in place, and you can pass a list of pairs.
Inline::Mason::load_mason ( BEATLES => 'Nothing\'s gonna change my <% $ARGS{what} %>', # ... ... ... ); print BEATLES(what => 'world');
Load an external file manually and explicitly, and the scripts will belong to the caller's package. This is a safer and more robust way when Inline::Mason is used across several files and packages.
use Inline::Mason qw(passive as_subs); Inline::Mason::load_file('external_mason.txt');
As is said in the above, load_file serves the purpose. Also, you can specify the files wherein mason scripts reside when you first use the module. All you need to do is pass their names when you use the module, and then Inline::Mason will actively process them.
use Inline::Mason 'as_subs', [qw(external_mason.txt)];
When duplicated mason script's marker appears, new one overrides the old one.
Inline mason scripts are specific to packages. It means if you load virtual files within two different package context, files with the same marker will be viewed as different entities.
An small example is illustrated below.
File A.pm
package A; use Inline::Mason qw(as_subs); 1; __END__ __Mason__ Hello, World.
File B.pm
package B; use Inline::Mason qw(as_subs); require 'A.pm'; package A; print Mason(); # Hello, World. package B; print Mason(); # Hola, el mundo. 1; __END__ __Mason__ Hola, el mundo.
You can also call methods provided by Text::MicroMason using Inline::Mason.
Inline::Mason::execute( $hello ); Inline::Mason::safe_execute( $hello ); Inline::Mason::try_execute( $hello ); $n = Inline::Mason::compile( $nifty ); $n->(lang => "Perl"); Inline::Mason::execute_file( 't/external_mason', lang => "Perl" );
See Inline::Mason::OO for an object-oriented and extended style of Inline::Mason
This module uses Text::MicroMason as its backend instead of HTML::Mason, because it is much lighter and more accessible for this purpose. Please go to Text::MicroMason for details and its limitations.
This module is not mature yet, and everything is subject to changes. Use it with your own caution.
Copyright (C) 2004 by Yung-chung Lin (a.k.a. xern) <xern@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself
To install Inline::Mason, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Inline::Mason
CPAN shell
perl -MCPAN -e shell install Inline::Mason
For more information on module installation, please visit the detailed CPAN module installation guide.