interchange(1) an e-commerce and general HTTP database display system


interchange [--options] [file]




Interchange is a database access and retrieval system focused on e-commerce. It allows customers to select items to buy from catalog pages. The program tracks user information in sessions and interacts with an HTTP server through sockets.

Interchange has many, many, functions and features; they are too numerous to describe in this venue. Complete information can be found at its web site:


Interchange requires Perl 5.8.5 or higher; more information on Perl can be seen at:



Interchange uses the Getopt::Long module, and most options will be recognized if they uniquely identifiable. The canonical forms are:
-a, --add
Add a catalog to the system. Information taken from the input file (or standard input). Implies reconfig=catalog. Example:

  echo "Catalog simple /catalogs/simple /simple.cgi" | bin/interchange -a

The information is in the form of a standard Interchange catalog line, and must be in the single-line format.

Run a jobs group which is a series of files in a directory with the name corresponding to the "job". For instance, if you set up a directory called ``weekly'' in your pages directory for the catalog "foundation", you can run those files with:

        interchange --runjobs=foundation=weekly

Files ending in .html (or whatever HTMLsuffix is for that catalog) are skipped. It is not tree-recursive --- directories are ignored.

Results can be emailed to an address if you specify --email=address, and they will be put in the jobs log file.

Alternatively jobs can be specified with --jobgroup=jobname before the --runjobs option. In other words, this will work:

        interchange --jobgroup=weekly --runjobs=foundation

This will NOT work:

        interchange --runjobs=foundation --jobgroup=weekly
-d dir, --dir=dir
Directory for VendRoot. This is where the Interchange configuration file will be looked for (if not redefined with "-f"), and where the log file will go (if not redefined with the ErrorFile directive).
-e name, --exclude=name
Exclude catalog from this startup.
Email address to email jobs results to.
-f file, --config=file
Configuration file to use (default is interchange.cfg in VendRoot).
-h, --help
Display help on command line options.
-i, --inetmode
Run with internet-domain socket only. Normally Interchange runs with both UNIX- and internet-domain sockets (except on Windows).
Sets the job for --runjobs if that is not included in the --runjobs call. MUST precede the --runjobs entry on the command line.

        interchange --jobgroup=weekly --runjobs=foundation

See --runjobs for an explanation of what this does.

--kill [signal]
By default, kills the server ungracefully with signal KILL (9, usually). The optional signal will be sent instead if supplied.
-q, --quiet
Suppress informational messages on startup. Only errors are shown.
Cause only catalog "name" to re-read its configuration.
Remove a catalog from operation; any future requests will get a not-found message.
-r, --restart
Stop and restart the server. This may take a long time if many catalogs are in use, and will temporarily take the system offline. If you want to change a UserTag, use the --add option instead.
This is the default if no mode options (--reconfig, --kill, --restart, etc.) are supplied.
Stop server gracefully with a TERM signal.
-t, --test
Report problems with config files; causes a complete configuration of the Interchange server but no server start.
-u, --unix
Run with unix-domain socket only. Normally Interchange runs with both UNIX- and internet-domain sockets. This will not work on Windows.
-v, --version
Display program version.
Set to true value to run foreground in debug mode. It is normal to receive warnings about various things if you run with perl -w.
Set a Interchange global directive upon start (or --restart). Example:

        interchange SocketPerms=0666

This will start the server and override the default of SocketPerms or the value set in interchange.cfg for this instance only. Any --restarts must re-specify the directive if it is still to have that value.

Set a Interchange directive for catalog "name" upon start (or --restart). Example:

        interchange simple:VendURL="http://localhost/cgi-bin/simple"

This will start the server and override the default of VendURL for the value set in catalog.cfg for this instance only. Any --restarts must re-specify the directive if it is still to have that value.


Interchange comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute and modify it under the terms of the GNU General Public License.


    Copyright (C) 2002-2011 Interchange Development Group
    Copyright (C) 1995-2002 Red Hat, Inc.
    All rights reserved except those granted in the license.


Mike Heins is the primary author of Interchange.

The Interchange Development Group is:

    Daniel Browning
    David Christensen
    Gert van der Spoel
    Greg Hanson
    Jon Jensen
    Jure Kodzoman
    Mark Johnson
    Mark Lipscombe
    Mike Heins
    Peter Ajamian
    Ron Phipps
    Stefan Hornburg (aka Racke), captain
    Ton Verhagen

Please do not contact the authors directly for help with the system. Use the Interchange mail list:

    [email protected]

Information on subscribing to the list, as well as general information and documentation for Interchange is at:


Original author of Vend, ancestor to Minivend and Interchange, was Andrew Wilcox <[email protected]>. Interchange could never have come into being without him. Interchange was based on Vend 0.2, with portions from Vend 0.3; both were produced in 1995.

Special thanks to Retired Core Team Members:

    Brev Patterson
    David Kelly
    Davor Ocelic
    Ed LaFrance
    Ethan Rowe
    Jonathan Clark
    JT Justman
    Kevin Walsh
    Paul Vinciguerra
    Randy Moore

Contributions to Interchange have been made by:

    Alison Smith                        Jonathan Walker
    Andreas Koenig                      Jordan Adler
    Andrew Rich                         Josh Braegger
    Bill Carr                           Josh Lavin
    Bill Dawkins                        Jose MX Revuelto
    Bill Randle                         Jurgen Botz
    Birgitt Funk                        Justin Otten
    Bob Jordan                          Kaare Rasmussen
    Brent Kelly                         Keiko
    Brian Bullen                        Keith Oberlin
    Brian Kosick                        Kim Lauritz Christensen
    Brian Miller                        Larry Huffman
    Bruce Albrecht                      Larry Leszczynski
    Cameron Prince                      Lars Tode
    Carl Bailey                         Lyn St George
    Chen Naor                           Marc Austin
    Christian Mueller                   Mark Stosberg
    Christopher Miller                  Marty Tennison
    Christopher Thompson                Massimiliano Ciancio
    Christopher Wenham                  Mat Jones
    Dan Busarow                         Matthew Schick
    Dan Collis-Puro                     Max Cohan
    Dan Helfman                         Michael Lehmkuhl
    Daniel Hutchinson                   Michael McCune
    Daniel Thompson                     Michael Wilk
    Dave Wingate                        Mick Weiss
    David Adams                         Mike Frager
    Dennis Cronin                       Neil Evans
    Don Grodecki                        Nelson Ferrari
    Don Hathaway                        Paul Delys
    Donald Alexander                    Paul Jordan
    Eric Zarko                          Phil Smith
    Frank Bonita                        Raj Goel
    Frederic Steinfels                  Ray Desjardins
    Gary Benson                         Reid Sutherland
    Gunnar Hellekson                    Rene Hertell
    Hamish Bradick                      Ryan Perry
    Hans-Joachim Leidinger              Sergiusz Jarczyk
    Heinz Wittenbecher                  Shozo Murahashi
    Hiroyuki Cozy Kojima                Sonny Cook
    Ignacio Lizaran                     Spencer Christensen
    Ivan Kohler                         Steve Graham
    Jack Tsai                           Thomas J.M. Burton
    Jason Holt                          Tim Baverstock
    Jason Kohles                        Tom Friedel
    Javier Martin                       Tom Tucker
    Jeff Barr                           Tommi Labermo
    Jeff Boes                           Toni Mueller
    Jeff Carnahan                       Troy Davis
    Jeff Fearn                          Victor Nolton
    Jeff Nappi                          William Dan Terry
    Jochen Wiedmann                     Zachary Matthews
    and many others.

And, of course, the entire Perl team without whom Interchange could not exist.