This is Info file pm.info, produced by Makeinfo version 1.68 from the
input file bigpm.texi.
File: pm.info, Node: Aviation/Report, Next: Aw, Prev: AutoSplit, Up: Module List
Perl extension for translating U.S. METAR, TAF and PIREP textual reports into plain English.
********************************************************************************************
NAME
====
Aviation::Report - Perl extension for translating U.S. METAR, TAF and
PIREP textual reports into plain English.
SYNOPSIS
========
use strict;
use Aviation::Report;
print decode_METAR_TAF(report, style);
print decode_PIREP(report, style);
DESCRIPTION
===========
Translates U.S. METAR, TAF and PIREP text reports into plain English.
Although the syntax of these reports is standardized, it is not as obvious
as it first appears to make correct translations.
The style option controls the final appearance. A style of 0 emits only
plain English, while 1 includes the original tokens for reference purposes.
AUTHOR
======
James Briggs <71022.3700@compuserve.com>
SEE ALSO
========
METAR.pm by Jeremy Zawodny
File: pm.info, Node: Aw, Next: Aw/Adapter, Prev: Aviation/Report, Up: Module List
Perl extension for the ActiveWorks C Application Development Kit
****************************************************************
NAME
====
Aw - Perl extension for the ActiveWorks C Application Development Kit
SYNOPSIS
========
use Aw; require Aw::Adapter; require Aw::Event;
my $adapter = new Aw::Adapter ( "3.0", ) ; my $event = new Aw::Event;
DESCRIPTION
===========
A Java like interface to the CADK thru Perl.
Exported Constants
==================
Everything in the CADK include files should be exported as constants.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). ActiveWorks Supplied Documentation
File: pm.info, Node: Aw/Adapter, Next: Aw/Client, Prev: Aw, Up: Module List
ActiveWorks Adapter Module.
***************************
NAME
====
Aw::Adapter - ActiveWorks Adapter Module.
SYNOPSIS
========
require Aw::Adapter;
my $adapter = new Aw::Adapter;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Adapter methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/Client, Next: Aw/ClientX, Prev: Aw/Adapter, Up: Module List
ActiveWorks Client Module.
**************************
NAME
====
Aw::Client - ActiveWorks Client Module.
SYNOPSIS
========
require Aw::Client;
my $client = new Aw::Client;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Client methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/ClientX, Next: Aw/ConnectionDescriptor, Prev: Aw/Client, Up: Module List
ActiveWorks Client Module.
**************************
NAME
====
Aw::Client - ActiveWorks Client Module.
SYNOPSIS
========
require Aw::Client;
my $client = new Aw::Client;
DESCRIPTION
===========
Demonstative module that allows for a blessed hash to act as a client.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/ConnectionDescriptor, Next: Aw/Event, Prev: Aw/ClientX, Up: Module List
ActiveWorks Connection Descriptor Module.
*****************************************
NAME
====
Aw::ConnectionDescriptor - ActiveWorks Connection Descriptor Module.
SYNOPSIS
========
require Aw::ConnectionDescriptor;
my $cd = new Aw::ConnectionDescriptor;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Connection Descriptor methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/Event, Next: Aw/License, Prev: Aw/ConnectionDescriptor, Up: Module List
ActiveWorks Event Module.
*************************
NAME
====
Aw::Event - ActiveWorks Event Module.
SYNOPSIS
========
require Aw::Event;
my $event = new Aw::Event;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Event methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/License, Next: Aw/Log, Prev: Aw/Event, Up: Module List
ActiveWorks License Module.
***************************
NAME
====
Aw::License - ActiveWorks License Module.
SYNOPSIS
========
require Aw::License;
my $typeDef = new Aw::License;
DESCRIPTION
===========
Enhanced interface for the Aw.xs License methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/Log, Next: Aw/TypeDef, Prev: Aw/License, Up: Module List
ActiveWorks Log Module.
***********************
NAME
====
Aw::Log - ActiveWorks Log Module.
SYNOPSIS
========
require Aw::Log;
my $typeDef = new Aw::Log;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Log methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/TypeDef, Next: Aw/Util, Prev: Aw/Log, Up: Module List
ActiveWorks TypeDef Module.
***************************
NAME
====
Aw::TypeDef - ActiveWorks TypeDef Module.
SYNOPSIS
========
require Aw::TypeDef;
my $typeDef = new Aw::TypeDef;
DESCRIPTION
===========
Enhanced interface for the Aw.xs TypeDef methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: Aw/Util, Next: AxKit, Prev: Aw/TypeDef, Up: Module List
ActiveWorks Connection Descriptor Module.
*****************************************
NAME
====
Aw::Util - ActiveWorks Connection Descriptor Module.
SYNOPSIS
========
require Aw::Util;
my $cd = new Aw::Util;
DESCRIPTION
===========
Enhanced interface for the Aw.xs Connection Descriptor methods.
AUTHOR
======
Daniel Yacob Mekonnen, `Yacob@RCN.Com|mailto:Yacob@RCN.Com' in this
node
SEE ALSO
========
perl(1). Aw(3).
File: pm.info, Node: AxKit, Next: AxKit/XSP/ESQL, Prev: Aw/Util, Up: Module List
an XML Delivery Toolkit for Apache
**********************************
NAME
====
AxKit - an XML Delivery Toolkit for Apache
DESCRIPTION
===========
AxKit provides the user with an application development environment for
mod_perl, using XML, Stylesheets and a few other tricks. See
http://axkit.org/ for details.
SYNOPSIS
========
In httpd.conf:
# we add custom configuration directives
# so this *must* be in httpd.conf outside of
# all request based conditionals
PerlModule AxKit
Then in any Apache configuration section (Files, Location, Directory,
.htaccess):
# Install AxKit main parts
SetHandler perl-script
PerlHandler AxKit
# Setup style type mappings
AxAddStyleMap text/xsl Apache::AxKit::Language::Sablot
AxAddStyleMap application/x-xpathscript \
Apache::AxKit::Language::XPathScript
# Optionally set a hard coded cache directory
# make sure this is writable by nobody
AxCacheDir /opt/axkit/cachedir
# turn on debugging (1 - 10)
AxDebugLevel 5
Now simply create xml files with stylesheet declarations:
This is my test XML file.
And for the above, create a stylesheet in the same directory as the
file called "test.xsl" that compiles the XML into something usable by the
browser. If you wish to use other languages than XSLT, you can, provided a
module exists for that language.
BUILD PROBLEMS
==============
If you have trouble compiling AxKit, or apache fails to start after
installing, it's possible to use AxKit without the built in configuration
directives (which have been known to generate segfaults). To do this
install as follows:
perl Makefile.PL NO_DIRECTIVES=1
make
make test
make install UNINST=1
This removes the custom configuration directives. Note that the
UNINST=1 is required to make sure that old AxKit files are removed from
the binary directory (since it has no binary component any more). Now you
can change the directives to ordinary PerlSetVar directives:
PerlSetVar AxStyleMap "text/xsl => Apache::AxKit::Language::XSLT, \
application/x-xpathscript => Apache::AxKit::Language::XPathScript"
PerlSetVar AxCacheDir /opt/axkit/cache
It's worth noting that the PerlSetVar option is available regardless of
whether you compile with NO_DIRECTIVES set, although it is marginally
slower to use PerlSetVar.
Also note that if you go back to using the compiled directives, you
must again install with UNINST=1.
CONFIGURATION DIRECTIVES
========================
AxKit installs a number of new first class configuration directives for
you to use in Apache's httpd.conf or .htaccess files. These provide very
fine grained control over how AxKit performs transformations and sends its
output to the user.
Each directive below is listed along with how to use that directive with
NO_DIRECTIVES=1 (i.e. via PerlSetVar).
AxCacheDir
----------
This option takes a single argument, and sets the directory that the
cache module stores its files in. These files are an MD5 hash of the file
name and some other information. Make sure the directory you specify is
writable by either the nobody user or the nobody group (or whatever user
your Apache servers run as). It is probably best to not make these
directories world writable!
AxCacheDir /tmp/axkit_cache
or
PerlSetVar AxCacheDir /tmp/axkit_cache
AxDebugLevel
------------
If present this makes AxKit send output to Apache's error log. The
valid range is 0-10, with 10 producing more output. We recommend not to
use this option on a live server.
AxDebugLevel 5
or
PerlSetVar AxDebugLevel 5
AxGzipOutput
------------
This allows you to use the Compress::Zlib module to gzip output to
browsers that support gzip compressed pages. It uses the Accept-Encoding
HTTP header and some information about User agents who can support this
option but don't correctly send the Accept-Encoding header. This option
allows either On or Off values (default being Off). This is very much
worth using on sites with mostly static pages because it reduces outgoing
bandwidth significantly.
AxGzipOutput On
or
PerlSetVar AxGzipOutput 1
AxTranslateOutput
-----------------
This option enables output character set translation. The default method
is to detect the appropriate character set from the user agent's
Accept-Charset HTTP header, but you can also hard-code an output character
set using AxOutputCharset (see below).
AxTranslateOutput On
or
PerlSetVar AxTranslateOutput 1
AxOutputCharset
---------------
Fix the output character set, rather than using either UTF-8 or the
user's preference from the Accept-Charset HTTP header. If this option is
present, all output will occur in the chosen character set. The conversion
uses the iconv library, which is part of GNU glibc and/or most modern
Unixes. It is recommended to not use this option if you can avoid it. This
option is only enable if you also enable AxTranslateOutput.
AxOutputCharset iso-8859-1
or
PerlSetVar AxOutputCharset iso-8859-1
AxErrorStylesheet
-----------------
If an error occurs during processing that throws an exception, the
exception handler will try and find an ErrorStylesheet to use to process
XML of the following format:
/usr/htdocs/xml/foo.xmlSomething bad happened/usr/lib/perl/site/AxKit.pm342
There may potentially be multiple bt tags. If an exception occurs when
the error stylesheet is transforming the above XML, then a SERVER ERROR
will occur and an error written in the Apache error log.
AxErrorStylesheet text/xsl /stylesheets/error.xsl
or
PerlSetVar AxErrorStylesheet "text/xsl => /stylesheets/error.xsl"
AxAddXSPTaglib
--------------
XSP supports two types of tag libraries. The simplest type to understand
is merely an XSLT or XPathScript (or other transformation language)
stylesheet that transforms custom tags into the "raw" XSP tag form.
However there is another kind, that is faster, and these taglibs transform
the custom tags into pure code which then gets compiled. These taglibs
must be loaded into the server using the AxAddXSPTaglib configuration
directive.
# load the SQL taglib
AxAddXSPTaglib Apache::AxKit::Language::XSP::SQL
AxAddXSPTaglib Apache::AxKit::Language::XSP::Util
or
PerlSetVar AxAddXSPTaglibs \
Apache::AxKit::Language::XSP::SQL \
Apache::AxKit::Language::XSP::Util
AxStyle
-------
A default stylesheet title to use. This is useful when a single XML
resource maps to multiple choice stylesheets. One possible way to use this
is to symlink the same file in different directories with .htaccess files
specifying different AxStyle directives.
AxStyle "My custom style"
or
PerlSetVar AxPreferredStyle "My custom style"
AxMedia
-------
Very similar to the previous directive, this sets the media type. It is
most useful in a .htaccess file where you might have an entire directory
for the media "handheld".
AxMedia tv
or
PerlSetVar AxPreferredMedia tv
AxAddStyleMap
-------------
This is one of the more important directives. It is responsible for
mapping module stylesheet MIME types to stylesheet processor modules (the
reason we do this is to make it easy to switch out different modules for
the same functionality, for example different XSLT processors).
AxAddStyleMap text/xsl Apache::AxKit::Language::Sablot
AxAddStyleMap application/x-xpathscript \
Apache::AxKit::Language::XPathScript
AxAddStyleMap application/x-xsp \
Apache::AxKit::Language::XSP
or
PerlSetVar AxStyleMap \
"text/xsl => Apache::AxKit::Language::Sablot, \
application/x-xpathscript => Apache::AxKit::Language::XPathScript, \
application/x-xsp => Apache::AxKit::Language::XSP"
AxResetStyleMap
---------------
Since the style map will continue deep into your directory tree, it may
occasionally be useful to reset the style map (I don't have an example
usage of this at this time).
# option takes no arguments.
AxResetStyleMap
or
PerlSetVar AxStyleMap ""
Note that the PerlSetVar version of resetting the style map does not
work with the custom directive version of AxAddStyleMap and vice versa.
AxAddProcessor
--------------
This directive maps all XML files to a particular stylesheet to be
processed with. You can do this in a directive if you need to do
it by file extension:
AxAddProcessor text/xsl /stylesheets/docbook.xsl
Multiple directives for the same set of files make for a chained set of
stylesheet processing instructions, where the output of one processing
stage goes into the input of the next. This is especially useful for XSP
processing, where the output of the XSP processor will likely not be HTML
(or WAP or whatever your chosen output format is):
# use "." to indicate that XSP gets processed by itself.
AxAddProcessor application/x-xsp .
AxAddProcessor text/xsl /stylesheets/to_html.xsl
There is no PerlSetVar equivalent of this directive.
AxAddDocTypeProcessor
---------------------
This allows you to map all XML files conforming to a particular XML
public identifier in the document's DOCTYPE declaration, to the specified
stylesheet(s):
AxAddDocTypeProcessor text/xsl /stylesheets/docbook.xsl \
"-//OASIS//DTD DocBook XML V4.1.2//EN"
There is no PerlSetVar equivalent of this directive.
AxAddDTDProcessor
-----------------
This allows you to map all XML files that specify the given DTD file or
URI in the SYSTEM identifier to be mapped to the specified stylesheet(s):
AxAddDTDProcessor text/xsl /stylesheets/docbook.xsl \
/dtds/docbook.dtd
There is no PerlSetVar equivalent of this directive.
AxAddRootProcessor
------------------
This allows you to map all XML files that have the given root element
to be mapped to the specified stylesheet(s):
AxAddRootProcessor text/xsl /stylesheets/book.xsl book
Namespaces are fully supported via the following syntax:
AxAddRootProcessor text/xsl /stylesheets/homepage.xsl \
{http://myserver.com/NS/homepage}homepage
This syntax was taken from James Clark's Introduction to Namespaces
article.
There is no PerlSetVar equivalent of this directive.
AxResetProcessors
-----------------
This allows you to reset the processor mappings at from the current
directory level down.
AxResetProcessors
From this directory down you can completely redefine how certain types
of files get processed by AxKit.
-------------
This is a configuration directive block. It allows you to have finer
grained control over the mappings, by specifying that the mappings (which
have to be specified using the 4 directives above) contained within the
block are only relevant when the requested media type is as specified in
the block parameters:
AxAddProcessor text/xsl /stylesheets/webpage_screen.xsl
AxAddProcessor text/xsl /stylesheets/webpage_wap.xsl
AxAddProcessor text/xsl /stylesheets/webpage_tv.xsl
There is no PerlSetVar equivalent of this directive block.
-------------
This configuration directive block is very similar to the above, only
it specifies alternate stylesheets by name, which can be then requested
via a StyleChooser:
AxAddProcessor text/xsl /styles/webpage_screen.xsl
AxAddProcessor text/xsl /styles/webpage_printable.xsl
This and the above directive block can be nested, and can also be
contained within directives to give you even more control over how
your XML is transformed.
There is no PerlSetVar equivalent of this directive block.
CUSTOMISING AXKIT
=================
There are some configuration directives that are specifically reserved
for customising how AxKit works. These directives allow you to specify a
new class to replace the one being used for certain operations.
These directives all take as a single argument, the name of a module to
load in place of the default. They are:
AxConfigReader
AxProvider
AxCacheModule
The ConfigReader module returns information about various configuration
options. Currently it takes most of its information from the above
mentioned configuration directives, or from PerlSetVar.
The Provider module is the means by which AxKit gets its resources from.
The default Provider simply picks up files from the filesystem, but
alternate providers could pull the information from a DBMS, or perhaps
create some XML structure for directories. There currently exists one
alternate Provider module, which allows AxKit to work as a recipient for
Apache::Filter output. This module is Apache::AxKit::Provider::Filter.
The Cache module is responsible for storing cache data for later
retrieval.
Implementing these is non trivial, and it is highly recommended to join
the AxKit-devel mailing list before venturing to do so, and to also
consult the source for the current default modules. Details of joining the
mailing list are at http://axkit.org/mailinglist.xml
KNOWN BUGS
==========
There are currently some incompatibilities between the versions of expat
loaded by Apache when compiled with RULE_EXPAT=yes (which is a default,
unfortunately), and XML::Parser's copy of expat. This can cause sporadic
segmentation faults in Apache's httpd processes. The solution is to
recompile Apache with RULE_EXPAT=no. If you have a recent mod_perl and use
mod_perl's Makefile.PL to compile Apache for you, this option will be
enabled automatically for you.
There are a number of known bugs in XSP at this time. This is being
re-written to use SAX2, and so we are not focusing on fixing these bugs
until the re-write is further down the line.
AUTHOR and LICENSE
==================
AxKit is developed by AxKit.com Ltd. See http://axkit.com/ for more
details.
AxKit is licensed under either the GNU GPL Version 2, or the Perl
Artistic License.
Copyright AxKit.com, 2000.
MORE DOCUMENTATION
==================
For more documentation on things like XPathScript, XSP and XSLT, and a
quick getting started guide, please visit our community web site at
http://axkit.org/
SEE ALSO
========
*Note Apache/AxKit/Plugins/Fragment: Apache/AxKit/Plugins/Fragment,,
*Note Apache/AxKit/Plugins/Passthru: Apache/AxKit/Plugins/Passthru,, *Note
Apache/AxKit/StyleChooser/QueryString:
Apache/AxKit/StyleChooser/QueryString,, *Note
Apache/AxKit/StyleChooser/UserAgent: Apache/AxKit/StyleChooser/UserAgent,,
*Note Apache/AxKit/StyleChooser/PathInfo:
Apache/AxKit/StyleChooser/PathInfo,, *Note
Apache/AxKit/StyleChooser/FileSuffix:
Apache/AxKit/StyleChooser/FileSuffix,, *Note
Apache/AxKit/StyleChooser/Cookie: Apache/AxKit/StyleChooser/Cookie,,
`Apache::AxKit::MediaChooser::WAPCheck' in this node, *Note
Apache/AxKit/Provider: Apache/AxKit/Provider,,
`Apache::AxKit::Provider::Filter' in this node,
`Apache::AxKit::Provider::File' in this node,
`Apache::AxKit::Provider::Scalar' in this node
(and probably others I have forgotten about)
File: pm.info, Node: AxKit/XSP/ESQL, Next: AxKit/XSP/Exception, Prev: AxKit, Up: Module List
An Extended SQL taglib for AxKit eXtensible Server Pages
********************************************************
NAME
====
AxKit::XSP::ESQL - An Extended SQL taglib for AxKit eXtensible Server
Pages
SYNOPSIS
========
Add the esql: namespace to your XSP ` tag:
And add this taglib to AxKit (via httpd.conf or .htaccess):
AxAddXSPTaglib AxKit::XSP::ESQL
DESCRIPTION
===========
This tag library provides extensive support for executing SQL statements
from within XSP. This tag library is the same as the Cocoon ESQL taglib.
TAG REFERENCE
=============
Note that below we use the esql: prefix as a convention, however you can
use whatever prefix you like provided it is mapped to the appropriate
namespace.
`
-------------------
parent: none
This is the required 'wrapper' element that declares your connection.
`
---------------
parent:
The contents of this element define the DBI driver to be used. For
example, Pg, Sybase, Oracle.
`
--------------
parent:
The name of this tag is a hang-over from the Cocoon (Java) version. In
the AxKit version this is simply anything that goes after the driver in
the connection string. So for PostgreSQL you might have in here
`dbname=axkit', to connect to the "axkit" database. The full connect
string is constructed as follows:
"dbi:$driver" . ($dburl ? ":$dburl" : "")
See your DBD driver documentation for more details on what is valid for
the connection string.
`
-----------------
parent:
The username to connect to the database with.
`
-----------------
parent:
The password to use to connect to the database.
`
----------------------
parent:
This tag is a 'wrapper' tag around queries. You may have as many queries
as you like within a single ` tag.
`
------------------
parent:
The contents of this tag (which may be an ) define a number of
rows to skip forward in the result set.
`
-----------------
parent:
The maximum number of rows to return.
`
--------------
parent:
The contents of this tag define the query to be executed.
`
------------------
parent:
This tag can be put in your SQL query everywhere you might put a ? in
your SQL in DBI. ESQL is intelligent enough to create a cached statement
when you do this, and only execute your code when necessary. You put an
expression (or another taglib) within the parameter tag (see the example
below).
`
----------------
parent:
The contents of this tag are "executed" whenever the query returns some
results.
`
--------------------
parent:
The contents of this tag are "executed" for each row of the results
`
--------------------
parent:
This tag gets all of the columns in the current row, and outputs them
as ``value. If you specify an attribute
`tag-case="upper"', all columns are upper case. Alternatively, "lower"
gives you all tags in lower case. An ancestor attribute is also allowed,
see "Nested Results" below for more details.
get-*
-----
parent:
These are:
get-column
get-string
get-boolean
get-double
get-float
get-int
get-long
get-short
(and more below)
Each of these takes either an attribute column="name", or a child tag,
` which gives the column name. Alternatively either the
attribute or child element can be an integer (starting at 1) specifying
the column number.
Also allowed is an ancestor attribute, which is an integer (default 0),
which indicates how far up the nested results you go. See Nested Results
below.
`, `, `
------------------------------------------------------------
parent:
These tags are the same as get-* above, except they also take a
`format="..."' attribute, which contains a strftime formatting string.
`
----------------
parent:
Again the same as get-* above. This tag assumes the contents of the
column are valid XML, and appends that XML into the result tree.
`
-------------------------
parent:
Gets the current row number. Optional `ancestor' attribute.
`
------------------------
parent:
Gets the column name indicated by the numbered column in the
`column="..."' attribute, or the child ` element. The
attribute/child can actually be a string (name), but then what is the
point of that?
`
-------------------------
parent:
Gets the label of the column. This is a hang-over from the Cocoon java
implementation where sadly nobody seems to know what label is compared
with name. In this case, get-column-name is always lower case, whereas
get-column-label is returned in the case that the DBD driver returns it as.
`
-----------------------------
parent:
Returns the TYPE_NAME of the column indicated as other get-* elements.
See the DBI docs for more details.
`
-------------------
parent:
The contents of this element are executed when the SQL returned no rows.
`
-----------------------
parent:
The contents of this element are executed when the SQL was an update
statement. The number of rows updated are in the $rv variable.
Nested Results
==============
With the ESQL taglib it is quite possible to do nested results. This is
a way to emulate outer joins, or just better organise things. See below
for an example of this.
When using nested results, you can use the ancestor attribute on any of
the get-* elements to get results from higher up the ancestry of results.
Errors
======
Unlike the original Cocoon version of this taglib, we let you handle
errors however you choose to, using the exception taglib. If an error
occurs, ESQL will throw an exception. If you don't capture this exception
it will propogate up to the core of AxKit, and either give a 500 internal
server error, or execute the AxErrorStylesheet if one is defined. See
*Note AxKit: AxKit,.
EXAMPLE
=======
Pgdbname=axkitpostgres
select id,name from department_table where foo =
4 + 5header infoorg.postgresql.Driverjdbc:postgresql://localhost/testtesttestselect name from user_table where department_id = No employeesNo departments
AUTHOR
======
Matt Sergeant, matt@axkit.com. Original Cocoon taglib by Donald Ball
COPYRIGHT
=========
Copyright 2001 AxKit.com Ltd. You may use this module under the same
terms as AxKit itself.
SEE ALSO
========
*Note AxKit: AxKit,, `DBI' in this node, *Note
Apache/AxKit/Language/XSP: Apache/AxKit/Language/XSP,, the AxKit.org pages
at http://axkit.org/
File: pm.info, Node: AxKit/XSP/Exception, Next: AxKit/XSP/Param, Prev: AxKit/XSP/ESQL, Up: Module List
Exceptions taglib for eXtensible Server Pages
*********************************************
NAME
====
AxKit::XSP::Exception - Exceptions taglib for eXtensible Server Pages
SYNOPSIS
========
Add the sendmail: namespace to your XSP ` tag:
And add this taglib to AxKit (via httpd.conf or .htaccess):
AxAddXSPTaglib AxKit::XSP::Exception
DESCRIPTION
===========
Allows you to catch exceptions thrown by either your own code, or other
taglibs.
EXAMPLE
=======
This example shows all the tags in action:
...
An Error occured:
AUTHOR
======
Matt Sergeant, matt@axkit.com
COPYRIGHT
=========
Copyright (c) 2001 AxKit.com Ltd. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
SEE ALSO
========
AxKit
File: pm.info, Node: AxKit/XSP/Param, Next: AxKit/XSP/Sendmail, Prev: AxKit/XSP/Exception, Up: Module List
A namespace wrapper for accessing HTTP request paramaters.
**********************************************************
NAME
====
AxKit::XSP::Param - A namespace wrapper for accessing HTTP request
paramaters.
SYNOPSIS
========
Add the param: namespace to your XSP ` tag:
And add the taglib to AxKit (via httpd.conf or .htaccess):
AxAddXSPTaglib AxKit::XSP::Param
DESCRIPTION
===========
The XSP param: tag library implements a simple way to access HTTP
request parameters (query string and posted form data) by field name.
Thus, the value submitted from this text box
is available after POSTing as
The same is true for information passed through the query string.
The best way to describe this taglib's use is with a few examples:
*Simple inline text insertion* -
Greetings, , welcome to our site!
*As the contents of another element* -
*As the attribute value for another elememnt* -
Note that if the specified parameter field does not exist no error is
thrown. So, this:
Will result in following after proccessing:
Tag Reference
-------------
There are no named functions for this tag library.
AUTHOR
======
Kip Hampton, khampton@totalcinema.com
COPYRIGHT
=========
Copyright (c) 2001 Kip Hampton. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
SEE ALSO
========
AxKit
File: pm.info, Node: AxKit/XSP/Sendmail, Next: AxKit/XSP/Util, Prev: AxKit/XSP/Param, Up: Module List
Simple SMTP mailer tag library for AxKit eXtesible Server Pages.
****************************************************************
NAME
====
AxKit::XSP::Sendmail - Simple SMTP mailer tag library for AxKit
eXtesible Server Pages.
SYNOPSIS
========
Add the sendmail: namespace to your XSP ` tag:
And add this taglib to AxKit (via httpd.conf or .htaccess):
AxAddXSPTaglib AxKit::XSP::Sendmail
DESCRIPTION
===========
The XSP sendmail: taglib adds a simple SMTP mailer to XSP via Milivoj
Ivkovic's platform-neutral Mail::Sendmail module. In addition, all email
addresses are validated before sending using Maurice Aubrey's Email::Valid
package. This taglib is identical to the Cocoon taglib of the same name,
albeit in a different namespace..
Tag Reference
=============
`
----------------------
This is the required 'wrapper' element for the sendmail taglib branch.
`
---------------------
The this element sets the outgoing SMTP server for the current message.
If ommitted, the default set in Mail::Sendmail's %mailcfg hash will be
used instead.
`
-----------------
Defines the 'From' field in the outgoing message. If ommited, this
field defaults to value set in Mail::Sendmail's %mailcfg hash. Run
`perldoc Mall:Sendmail' for more detail.
`
---------------
Defines a 'To' field in the outgoing message. Multiple instances are
allowed.
`
---------------
Defines a 'Cc' field in the outgoing message. Multiple instances are
allowed.
`
----------------
Defines a 'Bcc' field in the outgoing message. Multiple instances are
allowed.
`
-----------------
Defines the body of the outgoing message.
EXAMPLE
=======
my $mail_message = 'I'm a victim of circumstance!';
curly@localhostmoe@spreadout.orglarry@porcupine.comshemp@alsoran.net$mail_message
ERRORS
======
When sending email fails, or an address is invalid, this taglib will
throw an exception, which you can catch with the AxKit exceptions taglib.
AUTHOR
======
Kip Hampton, khampton@totalcinema.com
COPYRIGHT
=========
Copyright (c) 2001 Kip Hampton. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
SEE ALSO
========
AxKit, Mail::Sendmail, Email::Valid
File: pm.info, Node: AxKit/XSP/Util, Next: B, Prev: AxKit/XSP/Sendmail, Up: Module List
XSP util: taglib.
*****************
NAME
====
AxKit::XSP::Util - XSP util: taglib.
SYNOPSIS
========
Add the util: namespace to your XSP ` tag:
And add this taglib to AxKit (via httpd.conf or .htaccess):
AxAddXSPTaglib AxKit::XSP::Util
DESCRIPTION
===========
The XSP util: taglib seeks to add a short list of basic utility
functions to the eXtesible Server Pages library. It trivializes the
inclusion of external fragments and adds a few other useful bells and
whistles.
TAG STRUCTURE
=============
Most of of the tags require some sort of "argument" to be passed (e.g.
` requires the name of the file that is to be read).
Unless otherwise noted, all tags allow you to pass this information either
as an attribute of the current element or as the text node of an
appropriately named child.
Thus, both:
and
foo.xml
are valid.
TAG REFERENCE
=============
`
---------------------
Provides a way to include an XML fragment from a local file into the
current parse tree. Requires a name argument. The path may be relative or
absolute.
`
--------------------
Provides a way to include an XML fragment from a (possibly) remote URI.
Requires an href argument.
`
--------------------------
Provides a way to include a local file *as plain text*. Requires a name
argument. The path may be relative or absolute.
`
---------------------
Provides a way to include an XML fragment from a scalar variable. Note
that this tag may *only* pass the required *expr* argument as a child
node. Example:
$xml_fragment
`
-------------
Returns a formatted time/date string. Requires a format attribute. The
format is defined using the standard strftime() syntax.
AUTHOR
======
Kip Hampton, khampton@totalcinema.com
SEE ALSO
========
AxKit.
File: pm.info, Node: B, Next: B/Asmdata, Prev: AxKit/XSP/Util, Up: Module List
The Perl Compiler
*****************
NAME
====
B - The Perl Compiler
SYNOPSIS
========
use B;
DESCRIPTION
===========
The B module supplies classes which allow a Perl program to delve into
its own innards. It is the module used to implement the "backends" of the
Perl compiler. Usage of the compiler does not require knowledge of this
module: see the O module for the user-visible part. The B module is of use
to those who want to write new compiler backends. This documentation
assumes that the reader knows a fair amount about perl's internals
including such things as SVs, OPs and the internal symbol table and syntax
tree of a program.
OVERVIEW OF CLASSES
===================
The C structures used by Perl's internals to hold SV and OP information
(PVIV, AV, HV, ..., OP, SVOP, UNOP, ...) are modelled on a class hierarchy
and the B module gives access to them via a true object hierarchy.
Structure fields which point to other objects (whether types of SV or
types of OP) are represented by the B module as Perl objects of the
appropriate class. The bulk of the B module is the methods for accessing
fields of these structures. Note that all access is read-only: you cannot
modify the internals by using this module.
SV-RELATED CLASSES
------------------
B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM, B::PVLV,
B::AV, B::HV, B::CV, B::GV, B::FM, B::IO. These classes correspond in the
obvious way to the underlying C structures of similar names. The
inheritance hierarchy mimics the underlying C "inheritance". Access
methods correspond to the underlying C macros for field access, usually
with the leading "class indication" prefix removed (Sv, Av, Hv, ...). The
leading prefix is only left in cases where its removal would cause a clash
in method name. For example, GvREFCNT stays as-is since its abbreviation
would clash with the "superclass" method REFCNT (corresponding to the C
function SvREFCNT).
B::SV METHODS
-------------
REFCNT
FLAGS
B::IV METHODS
-------------
IV
IVX
needs64bits
packiv
B::NV METHODS
-------------
NV
NVX
B::RV METHODS
-------------
RV
B::PV METHODS
-------------
PV
B::PVMG METHODS
---------------
MAGIC
SvSTASH
B::MAGIC METHODS
----------------
MOREMAGIC
PRIVATE
TYPE
FLAGS
OBJ
PTR
B::PVLV METHODS
---------------
TARGOFF
TARGLEN
TYPE
TARG
B::BM METHODS
-------------
USEFUL
PREVIOUS
RARE
TABLE
B::GV METHODS
-------------
is_empty
This method returns TRUE if the GP field of the GV is NULL.
NAME
STASH
SV
IO
FORM
AV
HV
EGV
CV
CVGEN
LINE
FILE
FILEGV
GvREFCNT
FLAGS
B::IO METHODS
-------------
LINES
PAGE
PAGE_LEN
LINES_LEFT
TOP_NAME
TOP_GV
FMT_NAME
FMT_GV
BOTTOM_NAME
BOTTOM_GV
SUBPROCESS
IoTYPE
IoFLAGS
B::AV METHODS
-------------
FILL
MAX
OFF
ARRAY
AvFLAGS
B::CV METHODS
-------------
STASH
START
ROOT
GV
FILE
DEPTH
PADLIST
OUTSIDE
XSUB
XSUBANY
CvFLAGS
B::HV METHODS
-------------
FILL
MAX
KEYS
RITER
NAME
PMROOT
ARRAY
OP-RELATED CLASSES
------------------
B::OP, B::UNOP, B::BINOP, B::LOGOP, B::LISTOP, B::PMOP, B::SVOP,
B::PADOP, B::PVOP, B::CVOP, B::LOOP, B::COP. These classes correspond in
the obvious way to the underlying C structures of similar names. The
inheritance hierarchy mimics the underlying C "inheritance". Access
methods correspond to the underlying C structre field names, with the
leading "class indication" prefix removed (op_).
B::OP METHODS
-------------
next
sibling
name
This returns the op name as a string (e.g. "add", "rv2av").
ppaddr
This returns the function name as a string (e.g. "PL_ppaddr[OP_ADD]",
"PL_ppaddr[OP_RV2AV]").
desc
This returns the op description from the global C PL_op_desc array
(e.g. "addition" "array deref").
targ
type
seq
flags
private
B::UNOP METHOD
--------------
first
B::BINOP METHOD
---------------
last
B::LOGOP METHOD
---------------
other
B::LISTOP METHOD
----------------
children
B::PMOP METHODS
---------------
pmreplroot
pmreplstart
pmnext
pmregexp
pmflags
pmpermflags
precomp
B::SVOP METHOD
--------------
sv
gv
B::PADOP METHOD
---------------
padix
B::PVOP METHOD
--------------
pv
B::LOOP METHODS
---------------
redoop
nextop
lastop
B::COP METHODS
--------------
label
stash
file
cop_seq
arybase
line
FUNCTIONS EXPORTED BY B
=======================
The B module exports a variety of functions: some are simple utility
functions, others provide a Perl program with a way to get an initial
"handle" on an internal object.
main_cv
Return the (faked) CV corresponding to the main part of the Perl
program.
init_av
Returns the AV object (i.e. in class B::AV) representing INIT blocks.
main_root
Returns the root op (i.e. an object in the appropriate B::OP-derived
class) of the main part of the Perl program.
main_start
Returns the starting op of the main part of the Perl program.
comppadlist
Returns the AV object (i.e. in class B::AV) of the global comppadlist.
sv_undef
Returns the SV object corresponding to the C variable sv_undef.
sv_yes
Returns the SV object corresponding to the C variable sv_yes.
sv_no
Returns the SV object corresponding to the C variable sv_no.
amagic_generation
Returns the SV object corresponding to the C variable
amagic_generation.
walkoptree(OP, METHOD)
Does a tree-walk of the syntax tree based at OP and calls METHOD on
each op it visits. Each node is visited before its children. If
`walkoptree_debug' (q.v.) has been called to turn debugging on then
the method `walkoptree_debug' is called on each op before METHOD is
called.
walkoptree_debug(DEBUG)
Returns the current debugging flag for `walkoptree'. If the optional
DEBUG argument is non-zero, it sets the debugging flag to that. See
the description of `walkoptree' above for what the debugging flag
does.
walksymtable(SYMREF, METHOD, RECURSE)
Walk the symbol table starting at SYMREF and call METHOD on each
symbol visited. When the walk reached package symbols "Foo::" it
invokes RECURSE and only recurses into the package if that sub
returns true.
svref_2object(SV)
Takes any Perl variable and turns it into an object in the
appropriate B::OP-derived or B::SV-derived class. Apart from functions
such as main_root, this is the primary way to get an initial "handle"
on a internal perl data structure which can then be followed with the
other access methods.
ppname(OPNUM)
Return the PP function name (e.g. "pp_add") of op number OPNUM.
hash(STR)
Returns a string in the form "0x..." representing the value of the
internal hash function used by perl on string STR.
cast_I32(I)
Casts I to the internal I32 type used by that perl.
minus_c
Does the equivalent of the -c command-line option. Obviously, this is
only useful in a BEGIN block or else the flag is set too late.
cstring(STR)
Returns a double-quote-surrounded escaped version of STR which can be
used as a string in C source code.
class(OBJ)
Returns the class of an object without the part of the classname
preceding the first "::". This is used to turn "B::UNOP" into "UNOP"
for example.
threadsv_names
In a perl compiled for threads, this returns a list of the special
per-thread threadsv variables.
AUTHOR
======
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'
File: pm.info, Node: B/Asmdata, Next: B/Assembler, Prev: B, Up: Module List
Autogenerated data about Perl ops, used to generate bytecode
************************************************************
NAME
====
B::Asmdata - Autogenerated data about Perl ops, used to generate
bytecode
SYNOPSIS
========
use Asmdata;
DESCRIPTION
===========
See `ext/B/B/Asmdata.pm'.
AUTHOR
======
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'
File: pm.info, Node: B/Assembler, Next: B/Bblock, Prev: B/Asmdata, Up: Module List
Assemble Perl bytecode
**********************
NAME
====
B::Assembler - Assemble Perl bytecode
SYNOPSIS
========
use Assembler;
DESCRIPTION
===========
See `ext/B/B/Assembler.pm'.
AUTHOR
======
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'
File: pm.info, Node: B/Bblock, Next: B/Bytecode, Prev: B/Assembler, Up: Module List
Walk basic blocks
*****************
NAME
====
B::Bblock - Walk basic blocks
SYNOPSIS
========
perl -MO=Bblock[,OPTIONS] foo.pl
DESCRIPTION
===========
This module is used by the B::CC back end. It walks "basic blocks". A
basic block is a series of operations which is known to execute from start
to finish, with no possiblity of branching or halting.
AUTHOR
======
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'
File: pm.info, Node: B/Bytecode, Next: B/C, Prev: B/Bblock, Up: Module List
Perl compiler's bytecode backend
********************************
NAME
====
B::Bytecode - Perl compiler's bytecode backend
SYNOPSIS
========
perl -MO=Bytecode[,OPTIONS] foo.pl
DESCRIPTION
===========
This compiler backend takes Perl source and generates a
platform-independent bytecode encapsulating code to load the internal
structures perl uses to run your program. When the generated bytecode is
loaded in, your program is ready to run, reducing the time which perl
would have taken to load and parse your program into its internal
semi-compiled form. That means that compiling with this backend will not
help improve the runtime execution speed of your program but may improve
the start-up time. Depending on the environment in which your program
runs this may or may not be a help.
The resulting bytecode can be run with a special byteperl executable or
(for non-main programs) be loaded via the `byteload_fh' function in the B
module.
OPTIONS
=======
If there are any non-option arguments, they are taken to be names of
objects to be saved (probably doesn't work properly yet). Without extra
arguments, it saves the main program.
*-ofilename*
Output to filename instead of STDOUT.
*-afilename*
Append output to filename.
-
Force end of options.
-f
Force optimisations on or off one at a time. Each can be preceded by
*no-* to turn the option off (e.g. *-fno-compress-nullops*).
*-fcompress-nullops*
Only fills in the necessary fields of ops which have been optimised
away by perl's internal compiler.
*-fomit-sequence-numbers*
Leaves out code to fill in the op_seq field of all ops which is only
used by perl's internal compiler.
*-fbypass-nullops*
If op->op_next ever points to a NULLOP, replaces the op_next field
with the first non-NULLOP in the path of execution.
*-fstrip-syntax-tree*
Leaves out code to fill in the pointers which link the internal syntax
tree together. They're not needed at run-time but leaving them out
will make it impossible to recompile or disassemble the resulting
program. It will also stop `goto label' statements from working.
*-On*
Optimisation level (n = 0, 1, 2, ...). -O means *-O1*. *-O1* sets
*-fcompress-nullops* *-fomit-sequence numbers*. *-O6* adds
*-fstrip-syntax-tree*.
-D
Debug options (concatenated or separate flags like `perl -D').
*-Do*
Prints each OP as it's processed.
*-Db*
Print debugging information about bytecompiler progress.
*-Da*
Tells the (bytecode) assembler to include source assembler lines in
its output as bytecode comments.
*-DC*
Prints each CV taken from the final symbol tree walk.
-S
Output (bytecode) assembler source rather than piping it through the
assembler and outputting bytecode.
-m
Compile as a module rather than a standalone program. Currently this
just means that the bytecodes for initialising main_start, main_root
and `curpad' are omitted.
EXAMPLES
========
perl -MO=Bytecode,-O6,-o,foo.plc foo.pl
perl -MO=Bytecode,-S foo.pl > foo.S
assemble foo.S > foo.plc
Note that `assemble' lives in the B subdirectory of your perl library
directory. The utility called perlcc may also be used to help make use of
this compiler.
perl -MO=Bytecode,-m,-oFoo.pmc Foo.pm
BUGS
====
Plenty. Current status: experimental.
AUTHOR
======
Malcolm Beattie, `mbeattie@sable.ox.ac.uk'