The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Text::MicroMason::PassVariables - Pass template data as variables

SYNOPSIS

Instead of using this class directly, pass its name to be mixed in:

use Text::MicroMason;
my $mason = Text::MicroMason->new( -PassVariables );

Use the standard compile and execute methods to parse and evaluate templates:

print $mason->compile( text=>$template )->( 'name'=>'Dave' );
print $mason->execute( text=>$template, 'name'=>'Dave' );

Templates can now access their arguments as global variables:

Welcome, <% $name %>! 

DESCRIPTION

Like Text::Template, this package passes in template arguments as package variables. For example, if you pass in an argument list of foo => 23, it will set the variable $foo in the package your template is compiled in. This allows template code to refer to $name rather than $ARGS{name}.

The strict pragma is disabled to facilitate these variable references.

Caution: Please note that this approach has some drawbacks, including the risk of clobbering global variables used for other purposes. It is included primarily to allow the TextTemplate module to emulate the behavior of Text::Template, and for quick-and-dirty simple templates where succinctness is more important than robustness.

Supported Attributes

package

Target package namespace. Defaults to Text::MicroMason::Commands.

Private Methods

assembler_rules()

Adds Perl fragments to handle package and symbol table munging.

assemble()

Modifies Perl subroutine to embed the target package namespace.

install_args_hash()

Performs symbol table munging to transfer the contents of an arguments hash into variables in a target namespace.

SEE ALSO

The interface being emulated is described in Text::Template.

For an overview of this templating framework, see Text::MicroMason.

This is a mixin class intended for use with Text::MicroMason::Base.

For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.