What is Dotiac::DTL?

Dotiac::DTL is an implementation of the Django Template Language in Perl.
The Django Template language is a system to generate output for dynamic applications, mostly it is used on the web to generate HTML dynamically on the webserver. The language includes serval useful tags and filters to make a webdesigners work a bit easier. The goal of the Django Template Language is to completely seperate the design from the program logic
It has a completly own parser and is written in Pure Perl, so it should run on most webservers just by installing or if that's not possible just copying.

What templates can be used?

The goal of Dotiac::DTL is to run/compile any template written for Django without any change done to it. There are however differences on the program side.
Some tags like {% url %} and {% load %} work differently, since they would require a complete Django backend for them to work.

Can it be extended with addons?

Yes, but you can't use your addons written for Django, since the parser is completly different. You will have to find a version for Dotiac::DTL or write one yourself, which isn't that hard.
Check out the list of known addons

What is that compiler?

The compiler translates Django templates into perl code, this makes them a lot faster to parse and execute. They even use less memory, but it might cause some more problems. Check out the documentation on Dotiac::DTL::Compiled
This website for example runs completely on compiled templates.

An example:

For those who don't really know how Django Templates look like, here is a small example:

<html>
        <head>
                <title>My blog</title>
        </head>
        <body>
        {% for blog_entry in blog %}
                <div class="blogentry">
                        <div class="entrytitle">{{ blog_entry.title|title }}</div>
                        <div class="text">
                                {{ blog_entry.text|truncatewords:200|linebreaks }}
                                <a href="">More</a>
                        </div>
                        {% if blog_entry.comments %}
                        <div class="comments">
                                {{ blog_entry.comments|length }} comment{{ blog_entry.comments|length|pluralize }}
                        </div>
                        {% endif %}
                </div>
        {% endfor %}
        </body>
</html>

And this is how a template is rendered in Perl:

#!/usr/bin/perl
use strict;
use warnings;

require Dotiac::DTL;
use CGI qw/header/;

print header();
my %variables=(
        variable1=>"Some text",
        variable2=>["An","array"],
        variable3=>$someobject
);
Dotiac::DTL->new("template.html")->print(\%variables);