Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 2259a9579a
Fetching contributors…

Cannot retrieve contributors at this time

138 lines (94 sloc) 3.351 kb
#============================================================= -*-Perl-*-
# Template::Stash::XS
# Perl bootstrap for XS module. Inherits methods from
# Template::Stash when not implemented in the XS module.
package Template::Stash::XS;
use strict;
use warnings;
use Template;
use Template::Stash;
require DynaLoader;
@Template::Stash::XS::ISA = qw( DynaLoader Template::Stash );
eval {
bootstrap Template::Stash::XS $Template::VERSION;
if ($@) {
die "Couldn't load Template::Stash::XS $Template::VERSION:\n\n$@\n";
# no op
# catch missing method calls here so perl doesn't barf
# trying to load *.al files
my ($self, @args) = @_;
my @c = caller(0);
my $auto = $AUTOLOAD;
$auto =~ s/.*:://;
$self =~ s/=.*//;
die "Can't locate object method \"$auto\"" .
" via package \"$self\" at $c[1] line $c[2]\n";
=head1 NAME
Template::Stash::XS - High-speed variable stash written in C
use Template;
use Template::Stash::XS;
my $stash = Template::Stash::XS->new(\%vars);
my $tt2 = Template->new({ STASH => $stash });
The Template:Stash::XS module is an implementation of the
Template::Stash written in C. The "XS" in the name refers to Perl's
XS extension system for interfacing Perl to C code. It works just
like the regular Perl implementation of Template::Stash but runs about
twice as fast.
The easiest way to use the XS stash is to configure the Template
Toolkit to use it by default. You can do this at installation time
(when you run C<perl Makefile.PL>) by answering 'y' to the questions:
Do you want to build the XS Stash module? y
Do you want to use the XS Stash by default? y
See the F<INSTALL> file distributed with the Template Toolkit for further
details on installation.
If you don't elect to use the XS stash by default then you should use
the C<STASH> configuration item when you create a new Template object.
This should reference an XS stash object that you have created
use Template;
use Template::Stash::XS;
my $stash = Template::Stash::XS->new(\%vars);
my $tt2 = Template->new({ STASH => $stash });
Alternately, you can set the C<$Template::Config::STASH> package
variable like so:
use Template;
use Template::Config;
$Template::Config::STASH = 'Template::Stash::XS';
my $tt2 = Template->new();
The XS stash will then be automatically used.
If you want to use the XS stash by default and don't want to
re-install the Template Toolkit, then you can manually modify the
C<Template/> module near line 42 to read:
$STASH = 'Template::Stash::XS';
=head1 BUGS
Please report bugs to the Template Toolkit mailing list
=head1 AUTHORS
Andy Wardley E<lt>abw@wardley.orgE<gt> L<>
Doug Steinwand E<lt>dsteinwand@citysearch.comE<gt>
Copyright (C) 1996-2012 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=head1 SEE ALSO
Jump to Line
Something went wrong with that request. Please try again.