Embperl - Building dynamic Websites with Perl

Copyright (c) 1997-2008 Gerald Richter / ecos gmbh  www.ecos.de
Copyright (c) 2008-2014 Gerald Richter

You may distribute under the terms of either the GNU General Public 
License or the Artistic License, as specified in the Perl README file.

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.




OVERVIEW
========

Embperl gives you the power to embed Perl code in your HTML documents
and the ability to build your Web site out of small reusable objects in
an object-oriented style. You can also take advantage of all the
usual Perl modules, (including DBI for database access) use their
functionality and easily include their output in your web pages.
Additionally Embperl support including XML, XSLT tranformations and
a lot of other sources formats.

Embperl has several features which are especially useful for creating
HTML, including dynamic tables, form field processing and validation, URL
escaping/unescaping, session handling, and more.

Embperl is a server-side tool, which means that it's browser-independent. 
It can run in various ways: under mod_perl, as a CGI script, or offline.

For database access, there is a module called DBIx::Recordset, which 
works well together with Embperl and simplifies creating web pages
with database content.


DOCUMENTATION
=============

The following documentation is available within the distribution

Detailed list of documenation:  perldoc TOC.pod
Features of Embperl:            perldoc Features.pod
Introduction to basic Embperl:  perldoc Intro.pod
Introduction to Embperl 2 
advanced features:              perldoc IntroEmbperl2.pod
Introduction to EmbperlObject:  perldoc IntroEmbperlObject.pod
Installation of Embperl:        perldoc INSTALL.pod
Full documentation:             perldoc Config.pod
                                perldoc Embperl.pod
                                perldoc Embperl/Object.pm
                                perldoc Embperl/Mail.pm
                                perldoc Embperl/Inline.pm
Tips and Tricks:                perldoc TipsAndTricks.pod
Changes:                        perldoc Changes.pod
Examples:                       eg/README
Sourcecode encryption:          crypto/README
Documentation and example for
Embperl::Form can be found at:  eg/forms


All the above and further information can be found at the Embperl website 

    http://perl.apache.org/embperl/

All the above and further information can be found at the german Embperl website 

    http://www.ecos.de/embperl/


---> See README.v2 if you upgrade from 1.x <---


FEATURES
========

* Embperl facilitates embedding Perl code into HTML/XML or other text documents. 
Perl code is evaluated at the server side and the result is sent to the browser.
All available Perl modules can be used without any restriction.

* Allows one to build Web sites out of small reusable components in an object-oriented way.
Components can call and/or embed each other and inherit from other objects.

* Standard layout of a web-site site can be defined once and the content can be 
dynamically generated by these components based on the uri. The documents need only 
contain the variable portions but not the common items which define the 
layout like headers/footers or navigation bars which normally form the template. 
Also these common elements can be overwritten in each sub-directory.

* Embperl 2.0 thus facilitates separating code, layout and creating MVC (Model-View-Controller)
applications. Control logic can be moved into an application object, 
which controls further execution of the request, while the actual pages are
containing the display code. Simple applications can still embed all the code in the pages.

* Source-code for each component can come from a different source, eg.
from file, memory or sub-request which allows one to act on the output from another Apache
application like PHP, JSP, CGI Script etc.

* Each component can be in a different source format (e.g. HTML, WML, XML, POD, ...)
and can be transformed to other output formats, say by using via XSLT. 

* Supports one or more scripting syntax using Embperl, ASP, Text, Perl and others.

* Output generation is divided into small steps where each is processed by a plugable provider. 
The interaction of the providers can be individually configured for each component via recipes.

* Supports caching of intermediate results and output.

* Embperl encompasses several features that ease the task of dynamic web-site content generation, 
including dynamic-tables, form-field-processing, escaping/unescaping, etc.

* Contains a module for easy form input validation, which is able to validate user input
at the server side and on the client side by one definition of rules.

* Handles per-user and per-module persistent session requiring only storage and retrieval of 
the session data from a special hash.

* UTF-8 Support (honours Perl's internal UTF-8 flag during in- and output)

* Offers flexible configuration options to suite individual tastes and needs.

* Fully integrated into Apache and mod_perl to acheive the best performance. 
Can also run as a free standing CGI-script, off-line or can be called from another Perl program.

* The Perl module DBIx::Recordset offers high level, easy to use database access for Embperl.

* Embperl::Mail enables redirecting the result output to a mail-recipient.

* Embperl::Inline allows one to embedd Embperl code in normal Perl code

* Embperl::Form is a sophisticated library for building HTML forms



COMPATIBILITY
=============

I have tested Embperl successfully

on Linux 2.x with

perl5.005_01/02/03
perl5.6.1
perl5.8.x
perl5.10.x
perl5.12.x
perl5.14.x
perl5.16.x
perl5.18.x
apache_1.3.x, apache 2.0.x, apache 2.2.x, apache 2.4.x
apache + mod_ssl
apache_ssl (Ben SSL)
Stronghold 2.2
Stronghold 2.4.1

on Windows NT 4.0 with

perl5.004_04
perl5.005_xx 
perl5.6.1
perl5.8.x
apache_1.3.0 - apache_1.3.31

Apache 2 is currently not supported on Windows.
This is planned for Embperl 3

on Windows 95/98 with

perl5.004_02 (binary distribution)
Offline mode
perl5.005_03 + apache_1.3.6 

I know from other people that it works on many other UNIX systems


FEEDBACK and BUG REPORTS
========================

Please let me know if you use or test this module.  Bugs, questions,
suggestions for things you would find useful, etc., are discussed on
the Embperl mailing list. If you have a site that is using Embperl,
I would love to mention it in the list of sites using Embperl 
(http://perl.apache.org/embperl/db/sites/sites.htm). Please go
to the Embperl website and add your site.


The Embperl mailing list (embperl@perl.apache.org) is available for Embperl users
and developers to share ideas, solve problems and discuss things related to Embperl
To subscribe to this list, send mail to embperl-subscribe@perl.apache.org.
To unsubscribe send email to embperl-unsubscribe@perl.apache.org . 

There is an archive for the Embperl mailing list at
http://mail-archives.apache.org/mod_mbox/perl-embperl

For mod_perl related questions you may search the mod_perl mailing list
archive at http://mail-archives.apache.org/mod_mbox/perl-modperl




COMMERICAL SUPPORT
==================

You can get free support on the Embperl mailing list (see above).  If
you need commercial support, ecos can provide it for you. We offer:

* Consulting, assitance and training for you and your programmers

* Planning of your dynamic website

* Creating of parts or a whole website

* Fixing bugs in Embperl (also available for mod_perl)

* Adding new features

You can reach us via http://www.ecos.de or richter at embperl dot org 



HOW TO SUPPORT THE DEVELOPMENT OF EMBPERL
=========================================

If you use and like Embperl and want to support it's ongoing development
you have two possibilities:

1. Send me patches for things you like to see in Embperl

2. Donate money to Embperl. See http://perl.apache.org/donate.htm

3. Buy commercial support (see above). Also you _may_ get the same answers
   to your questions on the mailing list, by buying the commercial support
   you not only buy support for yourself and can be sure you get an answer,
   you also give us the possibility to put more power in the further
   development of Embperl.


LOGO
====

The Embperl distribution contains a "Powered by Embperl" Logo
(EmbperlLogo.gif) which you may place at your Web-site if you like.


AUTHOR
======

G. Richter (richter at embperl dot org)


