New module HTML::EasyTags
The next version of the Module List will list the following module: modid: HTML::EasyTags DSLI:bdpO description: Make proper HTML 4 tags/lists/parts userid: DUNCAND (Darren Duncan) chapterid: 15 (World_Wide_Web_HTML_HTTP_CGI) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 13:51:03 2001 GMT The resulting entry will be: HTML:: ::EasyTagsbdpO Make proper HTML 4 tags/lists/parts DUNCAND Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
Re: Namespace for PGP module
> On Mon, 1 Jan 2001 17:43:22 -0600, "Jason" <[EMAIL PROTECTED]> said: > I've made a mod that works with PGP (tested with 2.6.2 on BSD and Windows, > and 6.5.8 on Windows). It is similar to some of the existing modules (in > particular Crypt::PGP5 and PGP::Pipe) but runs on windows. For some reason > I cannot get the existing PGP modules to work on windows - probably my own > stupidity. Are you registered as author? If so under which name? If not, would you please let us know you name, email, homepage, preferred userid? -- andreas
Re: Request for namespaces
> On Sun, 31 Dec 2000 14:09:46 -0500, "Miko O'Sullivan" <[EMAIL PROTECTED]> said: miko> Math::BooleanArray adpO Parse boolean expressions >> >> I cannot follow the relation of "Parse" and "Array". Could you explain >> the idea a little?--Thanks! > The object parses the expression into an array of component expressions. > For example, the expression "yea | ney" would be parsed into an array > consisting of "yea" and "ney". You evaluate the expression by changing each > component in the array to 1 or 0. The object then substitutes each element > back into the expression, so the above would end up as something like "1 | > 0" which of course evaluates to 1. > If you have any other suggestions I'd be happy to consider them. I would > prefer to avoid "BooleanParse" because that may imply a much bigger set of > utilities. I'm sure I'm missing something very basic here: Where is the "or" in the array? I mean, how do "yea | ney" and "yea & ney" differ? -- andreas
RFC: New HPUX::Ioscan module
Hello I've written for my needs an interface module that works on top of the HP-UX command ioscan. This module is quite basic but it interests some people in the community. (See the small thread in c.l.p.modules for further details) So do you agree that: - The HPUX:: namespace should be created ? - I use HPUX::Ioscan for this module ? If yes (or if I get no answer) I'll upload this new module to CPAN real soon. Cheers (and happy new year). -- [EMAIL PROTECTED]
Author registration and Perl Ole for Process Control module
I have a Perl module which uses the Win32::OLE modules to implement a Perl interface to the OLE for Process Control COM interface. This module is currently available from the OPC Programmers Connection site at http://www.opc.dial.pipex.com/tooltech.shtml#perl I am not sure how many people have downloaded this, but I have received a request to put this module on CPAN to make it easier for the Perl community to find. Therefore I am asking for access to PAUSE and these are the required details: Name:Martin Tomes Email address: [EMAIL PROTECTED] user-ID on CPAN: MARTINTO Contributed Module: Win32::OLE::OPC - OPC Server Interface SYNOPSIS Two ways of using the OPC interface are provided, the class methods: use Win32::OLE::OPC; my $opcintf = Win32::OLE::OPC->new('Someones.OPCAutomation', 'Someones.Server'); $opcintf->MoveToRoot; foreach $item ($opcintf->Leafs) { print $item->{name}, "\n"; my %result = $opcintf->ItemData($item->{itemid}); for $attrib (keys %result) { print "[", $attrib, " = '", $result{$attrib}, "']", "\n"; } print "\n"; } foreach $item ($opcintf->Branches) { print $item->{name}, "\n"; } or a tied hash: use Win32::OLE::OPC; my %OPC; tie %OPC, Win32::OLE::OPC, 'Someones.OPCAutomation', 'Someones.Server'; # OK, list the keys... for $key (keys %OPC) { my %x = %{$OPC{$key}}; print $key, "\n"; for $attrib (keys %x) { print "'", $attrib, "' = '", $x{$attrib}, "'", "\n"; } print "\n"; } The tied hash method has to return a reference to a hash containing the item data hence the unpleasant code '`%x = %{$OPC{$key}}''. Alternatively one can assign the returned value into a scalar and dereference it when using the hash like this '`keys %$x'' and '`$result->{$item}''. Note that both methods can be used together. First create an interface using the `new()' method and then tie it like this: tie %OPC, $opcintf, 'Someones.OPCAutomation', 'Someones.Server'; Module Listing: (argh!! the name is two chars too long.) NameDSLI Description Info - - Win32::OLE::OPC RdpO Ole for Process Control Server Interface MARTINTO I would like advice on the namespace. This is a COM interface and it is therefore logical to put it in the Win32::OLE space, but that is owned and run from ActiveState (I think). Is it Bad Form(tm) to put a module in someone elses space? The only realistic alternative is Win32::OPC which would be OK if a little less accurate. -- Regards, Martin Tomes [EMAIL PROTECTED]
Re: would like to contribute 2 perl modules
Andreas, Yes, the AltaVista::SearchSDK module by James Turner is quite outdated. The AltaVista::PerlSDK module I want to submit is up-to-date with our most recent Search Developer's Kit functionality. Thanks, / Brian Williams http://solutions.altavista.com -Original Message- From: Andreas J. Koenig <[EMAIL PROTECTED]> To: Brian Williams <[EMAIL PROTECTED]> Cc: [EMAIL PROTECTED] <[EMAIL PROTECTED]> Date: Sunday, December 31, 2000 11:26 AM Subject: Re: would like to contribute 2 perl modules >> On Thu, 21 Dec 2000 19:36:21 -0500, "Brian Williams" <[EMAIL PROTECTED]> said: > > > I would like to contribute two perl 5.x modules. Below is my information: > > Name: Brian Williams > > Email: [EMAIL PROTECTED] > > Preferred Uername: bwilliam > > What I want to submit: Two modules, named AltaVista::PerlSDK and > > AltaVista::SDKLinguistics. These are modules that enable programmers to > > utilize the AltaVista Search Developer's Kit ( see > > http://solutions.altavista.com ) C libraries from Perl programs. > > Yes, I'm sure there is interest in these two Perl modules. > >Have you checked > >cpan> m AltaVista::SearchSDK >Module id = AltaVista::SearchSDK >DESCRIPTION Perl Wrapper for AltaVista SDK functionality >CPAN_USERID JTURNER (James Turner <[EMAIL PROTECTED]>) >CPAN_VERSION 0.01 >CPAN_FILEJ/JT/JTURNER/SearchSDK-0.99b.tar.gz >DSLI_STATUS cdcf (pre-alpha,developer,C,functions) > >? > > > >-- >andreas >
Re: CGI::Application::MailPage, FORTH TRY
> On Sat, 30 Dec 2000 00:03:52 -0500 (EST), Sam Tregar <[EMAIL PROTECTED]> said: > Maybe you should put a note in the > PAUSE docs that if you don't get a response in three or four months that > you can take that as a Yes. That's there in CPAN/modules/04pause.html for quite some time: And please do consult these archive before you post a module proposal. The fulltext search capabilities of the archive should help you to find similar suggestions and contact addresses. [EMAIL PROTECTED] is low volume, so your search in the archive is quite targetted. The module list maintainers themselves are mostly lurkers. You need not wait for a response. Generally a lack of response can be taken as acceptance of the module name being proposed. -- andreas
Re: CGI::Application::MailPage, FORTH TRY
> On Sat, 30 Dec 2000 17:54:38 -0500 (EST), Sam Tregar <[EMAIL PROTECTED]> said: > I think MailPage is more accurate - the module requires the the target URL > be an HTML page that is readable on the local filesystem. Calling it > MailURL seems to imply that it can handle any URL anywhere on the web. > Maybe CGI::Application::MailHTMLPage would be more accurate? As I see no risk of a namespace clash all three suggestions sound OK to me. MailURL would be the most generic but it should really not be limited to static pages on the local filesystem. Maybe you will add this functionality (it should be a matter of a few lines)? -- andreas
Re: Namespace for PGP module
Sorry - my pause username is jhinkle (just registered, havn't uploaded anything yet) -j - Original Message - From: "Andreas J. Koenig" <[EMAIL PROTECTED]> To: "Jason" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Tuesday, January 02, 2001 8:02 AM Subject: Re: Namespace for PGP module > > On Mon, 1 Jan 2001 17:43:22 -0600, "Jason" <[EMAIL PROTECTED]> said: > > > I've made a mod that works with PGP (tested with 2.6.2 on BSD and Windows, > > and 6.5.8 on Windows). It is similar to some of the existing modules (in > > particular Crypt::PGP5 and PGP::Pipe) but runs on windows. For some reason > > I cannot get the existing PGP modules to work on windows - probably my own > > stupidity. > > Are you registered as author? If so under which name? If not, would > you please let us know you name, email, homepage, preferred userid? > > -- > andreas >
New module Shockwave::Lingo
The next version of the Module List will list the following module: modid: Shockwave::Lingo DSLI:i??? description: Collection of modules for Lingo processing userid: MARTIN (Martin Langhoff) chapterid:9 (Language_Interfaces) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 15:32:47 2001 GMT The resulting entry will be: Shockwave:: ::Lingo i??? Collection of modules for Lingo processing MARTIN Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
New module Class::ObjectTemplate
The next version of the Module List will list the following module: modid: Class::ObjectTemplate DSLI:bdpO description: Optimized template builder base class userid: JASONS (Jason E. Stewart) chapterid:6 (Data_Type_Utilities) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 15:46:03 2001 GMT The resulting entry will be: Class:: ::ObjectTemplate bdpO Optimized template builder base classJASONS Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
New module Class::ObjectTemplate::DB
The next version of the Module List will list the following module: modid: Class::ObjectTemplate::DB DSLI:bdpO description: Template base class for DB objects userid: JASONS (Jason E. Stewart) chapterid:6 (Data_Type_Utilities) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 15:46:58 2001 GMT The resulting entry will be: Class::ObjectTemplate:: ::DB bdpO Template base class for DB objects JASONS Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
New module Bio::Genex
The next version of the Module List will list the following module: modid: Bio::Genex DSLI:bmpO description: Store, manipulate gene expression data userid: JASONS (Jason E. Stewart) chapterid: 23 (Miscellaneous_Modules) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 15:48:20 2001 GMT The resulting entry will be: Bio:: ::Genex bmpO Store, manipulate gene expression data JASONS Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
Bugfix release of Perl module: Iterator.pm v0.021
Hi all, I uploaded a new version of the module "Iterator.pm" to CPAN. Registered author ID: HCAMP Archive name: Data-Iterator-0.021.zip Namespace:Data::Iterator Module version: 0.021 This is a maintainance release. The module can be found on CPAN in the "Category>>Data Type Utilities>>Data"-section. If you decide to put it into the module list, this is the module's meta information: DSLI Description -- RupO Simple iteration over complex data strucures >From the module's readme: Iterator.pm is an object orientated (plain) Perl module to iterate over complex data structures (LoL, LoH, HoL, HoH etc.). While Perl's built-in functions foreach(), each(), keys() and values() handle just a given level of a structure, Iterator digs deeper - handling a structure like an one-dimensional hash. For each element of a nested data structure the symbolic name ("data path"), The Value - as is! - plus some additional information are retrieved. That is, Iterator provides an unified syntax for simple handling of data sources of different types. Iterator does not alter the referenced structure, though values may be explicitly modified by the user. [snipped] mfg, Hartmut --- CREAGEN Computerkram Hartmut Camphausen Fon: 06422/850527 Am kleinen Born 1Fax: 06422/850528 35287 Amöneburg E-Mail: [EMAIL PROTECTED]
Re: New Module Bio::Genex
> On 18 Dec 2000 16:09:58 -0700, [EMAIL PROTECTED] (Jason E. Stewart) said: jason> I've never created a Bundle, though... How is it done? The Bundle file is a tet file that lists the modules it wants to tie together line by line. The format is extremely trivial, just use another bundle file as template. Lines between m/^=head1\s+CONTENTS/ and m/^=(?!head1\s+CONTENTS)/ are parsed, all the rest is ignored. A package declaration and $VERSION should be there. Test the bundle file by copying to your ~/.cpan/Bundle/ directory and run a "b" command in the CPAN shell. Ask me if questions remain. -- andreas
Re: adding DBD::RDB to the module list
> On Sun, 17 Dec 2000 10:39:17 +0100, Andreas Stiller <[EMAIL PROTECTED]> >said: > Hi, > some time ago i added a module DBD::RDB using the filename > DBD-RDB-1.00.tar.gz (today another version). Afterwards i could find it > in search.cpan.org using search via author but not via search by module > (looking for RDB,DBD::RDB or DBD-RDB). My question is: What action is > required to get a module indexed in search.cpan.org and/or in the module > list ? Package seems to come without Makefile.PL. You seem to work on a files system that is case-ignorant. Try to fix these two prerequisites and let's see how much better it gets. Regards, -- andreas
Re: New module by new contributor
> On Sat, 16 Dec 2000 00:39:10 +0100, Gilles Maire <[EMAIL PROTECTED]> said: > DSLI bdpO > description : Chess::Pgn - Perl extension for manipulation of chess PGN > format. PGN is for Portable Game >Notation and follow the Portable Game Notation Specification and > Implementation Guide revised >1994.03.12. You can find it at the section on > "/members.nbci.com/sghudson/standard.txt" in the >http: manpage. > Discussion : chess player who need to classify PGN files. The module > run. What about Games::Chess::PGN. Please note that the CPAN shell already finds: cpan> m /chess/ Module Chess::Pgn (M/MA/MAIRE/Chess-Pgn-0.03.tar.gz) Module Games::Chess(G/GD/GDR/Games-Chess-0.003.tar.gz) Module Games::Chess::Referee (G/GR/GREGOR/Games-Chess-Referee-0.002.tar.gz) 3 items found -- andreas
New module POE::Component::UserBase
The next version of the Module List will list the following module: modid: POE::Component::UserBase DSLI:RdpO description: A component to manage user authentication userid: JGOFF (Jeff Goff) chapterid:6 (Data_Type_Utilities) enteredby: ANDK (Andreas J. König) enteredon: Tue Jan 2 16:06:11 2001 GMT The resulting entry will be: POE::Component:: ::UserBaseRdpO A component to manage user authenticationJGOFF Please allow a few days until the entry will appear in the published module list. Parts of the data listed above can be edited interactively on the PAUSE. See https://pause.kbx.de/pause/authenquery?ACTION=edit_mod Thanks for registering, The Pause Team
Re: CGI::Application::MailPage, FORTH TRY
On 2 Jan 2001, Andreas J. Koenig wrote: > As I see no risk of a namespace clash all three suggestions sound OK > to me. MailURL would be the most generic but it should really not be > limited to static pages on the local filesystem. Maybe you will add > this functionality (it should be a matter of a few lines)? A few lines and a potential security hazard! I can easily see how the module could be used in DOS attacks and as an attack redirector if it was willing to fetch and mail arbitrary pages on the web. Yes, there would be ways to mitigate the danger, but it doesn't seem warrented to me. If many people request that functionality - perhaps limited to the local server name or something - I would consider it. My inclination is to keep first releases simple and targeted and to allow the users of the module to guide the creaping featurism. Thanks! -sam
Re: CGI::Application::MailPage, FORTH TRY
On 2 Jan 2001, Andreas J. Koenig wrote: > That's there in CPAN/modules/04pause.html for quite some time: My apologies, I should have read more carefully - I didn't remember that section. -sam
Re: New Module Bio::Genex
"Andreas J. Koenig" <[EMAIL PROTECTED]> writes: > > On 18 Dec 2000 16:09:58 -0700, [EMAIL PROTECTED] (Jason E. Stewart) said: > > jason> I've never created a Bundle, though... How is it done? > > The Bundle file is a tet file that lists the modules it wants to tie > together line by line. The format is extremely trivial, just use > another bundle file as template. > > Lines between m/^=head1\s+CONTENTS/ and m/^=(?!head1\s+CONTENTS)/ are > parsed, all the rest is ignored. A package declaration and $VERSION > should be there. > > Test the bundle file by copying to your ~/.cpan/Bundle/ directory and > run a "b" command in the CPAN shell. > > Ask me if questions remain. Hey Andreas, Happy New Year, and thanks for setting up the modules for me. I'm slightly embarassed by my Bundle question. I figured out the format from looking at some example bundles, so I'm sorry to make you write it for me. My real question was do I need to register a specific Bundle module with CPAN? Or will it figure it out by itself? I have never noticed the Bundles in the module list, so I figured it's just part of CPAN's magic. Thanks again, jas.
Re: Request for namespaces
On Tue, Jan 02, 2001 at 03:05:33PM +0100, Andreas J. Koenig wrote: > I'm sure I'm missing something very basic here: Where is the "or" in > the array? I mean, how do "yea | ney" and "yea & ney" differ? The or isn't in the array. Only the individual elements of the expression are in the array. So, for "yea | ney" you would get a two element array consisting of "yea" and "ney". You replace each element of the array with a 1 or 0 depending on whetever you do with the element. So, for "yea | nea" you would probably want to set the first element to 1 and the second to 0. Then you call the eval method to get the final evaluation of the expression. See the examples in the docs. :-) -miko
Registration on PAUSE, new module AI::Gene::Sequence
Hi, I've been doing some genetic programming with perl recently but didn't see any modules which help with the drudgery of splicing things in and out of arrays in twenty slightly different ways so have written one. These modules offer base classes which implement a range of mutations suitable for any sequential genes. One (Simple) just ensures that sensible arguments are passed to each method while the other (Sequence) also provides a means to enforce a gene grammar. This has been discussed fairly widely, with requests for comments on usenet, and the perlai mailing list. I've had a couple of emails expressing support and some warnings about the problems associated with genetic algorithms in perl (speed wise) but for some problem areas (eg. music composition) these become less of a problem, so these modules should be useful to someone even if not in any (computationally) serious context. Me: Name: Alex Gough Email:[EMAIL PROTECTED] Preferred id: AJGOUGH Homepage: http://users.ox.ac.uk/~shug0957/ The modules: NameDSLI Description Info -- - AI::Gene:: ::Sequence RdpO Base class of mutation methods +gene grammar --- ::SimpleRdpO Base class of mutation methods--- -- Alex Gough <[EMAIL PROTECTED]> http://users.ox.ac.uk/~shug0957/
Download of Perl 5.003-005
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}} {\colortbl ;\red0\green0\blue128;} \viewkind4\uc1\pard\f0\fs20 To whom it may concern:\par \par I have been trying to download perl 5.003-005 and www.cpan.org and once I receive the tar file, my virus detection detects a virus and tells me that it cannot be cleaned and advices me to delete it. We are implementing a Oracle Archiver and this is critical in implementing. Can you provide me with another copy of perl 5.003-005 or can you suggest a way for me to get a clean copy. This is urgent and a prompt response is appreciated.\par \par Thank you,\par \par \pard\cf1\b\i Renee Mitchell\par Cap Gemini Ernst & Young\par SA - Consultant @WDC Lake Forest, CA\par Contact : 949-672-7879\par [EMAIL PROTECTED]\par \cf0\b0\i0\par \pard\par }
Registration of BEHROOZI and CGI::SecureState
Greetings, This is my first entry to PAUSE, so I am requesting both a namespace (CGI::SecureState) and a PAUSE account (BEHROOZI). The module that I have created is a drop-in replacement for CGI::Persistent that stores the CGI parameters in an encrypted file on the server. Due to several shortcomings of CGI::Persistent (see below), the changes I made involved a complete rewrite (Persistence::Object::Simple was removed, for instance), so integration with CGI::Persistent was out of the question. I have checked both CPAN and archives of [EMAIL PROTECTED] for a similar module, but have turned up nothing. While I cannot provide a location where discussion has occurred on the topic, I have been running the code unchanged on the Price Laboratory School website (www.pls.uni.edu) under Apache::Registry for more than a month with no reported bugs. Peter The requirements: Name: Peter Behroozi Email: [EMAIL PROTECTED] Homepage: None. ID: BEHROOZI Description: CGI::SecureState (or whatever it ends up as) is a drop-in replacement for CGI::Persistent that corrects the three mainflaws of CGI::Persistent, e.g. failure to work with Perl's taint mode, not encrypting user data, and a lack of association between the user's data file and their computer. DSLI: Name DSLI DescriptionInfo - -- - SecureStateadpO Securely stores CGI parameters BEHROOZI
request namespace for HTML::FormTemplate
I would like to register the namespace for the following module: HTML::FormTemplate - adpO - Store definition and make persist forms, reports. One sentence overview: Perl module that maintains a predefined html input form definition with which it can generate form html, complete with persistant and error-checked user input, as well as formatted reports of the user input in html or plain text format (for emails). Note that my form definitions include the visible prompt/question text that the user sees, as well as optional help and error text. This is useful so that generated forms and reports are consistent with each other. My authorname is DUNCAND. This module is my largest and most feature-filled to date, and is currently on CPAN under the temporary name of HTML::FormMaker; it has received several improvements since then. Below I have printed some of the POD for the updated version, although it may change some more. I chose the name HTML::FormTemplate because my module essentially acts as a template, storing definitions in the form as a list of hashes that are then used to make both forms and reports. And that's just the start of why the name fits so well. It is not a template in the way of being finished HTML that has variable substitution done on it, but the definition hashes represent html structures, so it is effectively the same thing. I have scoured CPAN and the module list especially hard for similar modules, and while some may give the first impression of being the same, they are all very different. The next few paragraphs show my analysis of existing modules and how mine is different: The majority of modules that deal with forms are either in the business of parsing existing html, or they do various conversions like converting to XML or text, or they work with Request and Response objects. Mine focuses on HTML creation from scratch only, and does not parse anything; also, it doesn't do any HTML specialties besides the form related stuff (although it subclasses HTML::EasyTags). From reading the POD, it seems that "CGI::QuickForm" has the most in common with mine. That is, you can define all the form fields with one method call. These field definitions are compatible with those by CGI.pm, and it also extends those features with extra attributes for the field. It can generate both initial forms and subsequent forms with persistant user input. However, the module differs from mine in these ways: it is functional while mine is object; it takes care of user input and output, whereas mine expects the calling code to provide and to print (I focus on HTML only); it has you define your form in the same method call as generating the html, whereas with mine the form definition and html generation are separate methods, so you can have the choice of generating the whole form at once or one field at a time (called by name); mine generates input reports on demand and the other doesn't. HTML::FillInForm parses existing form html to insert persistant user input (it subclasses HTML::Parser); mine does not start with any html but a hash of field attributes. CGI.pm creates form html in the same method call as defining the field, and also takes care of getting user input. Mine provides the option to generate html with the same function as defining it, one field at a time, but it also provides two ways to generate on separate method calls from definition. HTML::StickyForms has an interface like CGI.pm for form field making, but it is a front that uses either CGI.pm or mod_perl in the back end to get persistant values; it appears simple on the surface. CGI::Form and HTML::Form are old and have no documentation that I could find, so I don't know what they do; most likely not similar. So I hope that I have made my case that I have a very unique offering. Thanks in advance, // Darren Duncan --- NAME HTML::FormTemplate - Store definition and make persist forms, reports. DEPENDENCIES Perl Version 5.004 Standard Modules I Nonstandard Modules CGI::MultiValuedHash HTML::EasyTags SYNOPSIS use strict; use HTML::FormTemplate; my @definitions = ( { visible_title => "What's your name?", type => 'textfield', name => 'name', }, { visible_title => "What's the combination?", type => 'checkbox_group', name => 'words', 'values' => ['eenie', 'meenie', 'minie', 'moe'], default => ['eenie', 'minie'], }, { visible_title => "What's your favorite colour?", type => 'popup_menu', name => 'color', 'values' => ['red', 'green', 'blue', 'chartreuse'], }, { type => 'submit', }, ); my $query_string = ''; if( $ENV{'REQUEST_METHOD'} =~ /^(GET|HEAD)$/ ) { $query_string = $ENV{'QUERY_STRING'}; } else { read( STDIN, $query_strin