Computing - Perl Programs 2

Publishing genealogy data using web pages is fairly common and there are several programs that can convert gedcom data to web pages. Since I wasn't satisfied with any existing program, I decided to write my own. For my own program, I wanted something that would print data in an information rich format, but without generating too many files. I settled on the family group sheet as an appropriate model.


mkfamweb - Make family group sheets from Gedcom file

Download mkfamweb. Requires

Program mkfamweb creates a set of family groups sheets in HTML format suitable for publishing genealogy data on a web site.

Depending on the options specified, this program creates one html file per family in the gedcom file, as well as an index file in html format, a list of surnames, and a gendex file.

For a sample of the output of this program, browse the Boldt family index. Another web site that uses mkfamweb is the Hagerman family genealogy site.


mkfamweb control-file

All options are specified in the control file.


The required options in the control file are GEDCOM and OUTDIR. Option GEDCOM is used to specify the name of the source gedcom file. Option OUTDIR is the directory where all output files are written. If you intend to upload the files to your web server, the output directory should match the file structure on your web server, especially if you use a gendex file.

The following files are written:

  • Family group sheets, one per family: The name of the file is the label in the gedcom file for the family.
  • Index file: If requested, an index file is generated. This file lists all individuals in the gedcom file with a link to the family group sheet file in which the individual is a child. If there is no child family for the individual, the name links to a spouse family group.
  • Surname list: If requested, a plain text file is generated with a list of surnames in the gedcom. This can be copied into another web page file to summarize the gedcom data. Option SURNAMESEP is used to specify what text separates each name. If not specified, the default separator is <BR>.
  • Gendex file: If requested, a gendex file is produced. This is a file described at .

For the html files, option HTMLEXT is used to specify the file extension.


Layout of Parents

LAYOUT=NORMAL lists parents vertically.

LAYOUT=TABLE lists parents horizontally in a table.

Name Styles

NAMESTYLE=NORMAL lists names with given names first and surname last. For example: Hans Wilhelm Joachim Boldt.

NAMESTYLE=FORMAL lists names with surname first. For example: Boldt, Hans Wilhelm Joachim.

Note that formal style is always used in the index file to make it easier to locate an individual.

Place Styles

PLACESTYLE=LONG lists full place names. For example: Odessa, Ontario, Canada.

PLACESTYLE=FIRST lists first name in place. For example: Odessa.

PLACESTYLE=LAST lists last name in place. For example: Canada.

Name Tags

NAMETAGS=YES lists gedcom label as part of name. For example: Heinrich Christoph Hans Boldt [I369].

Prolog and Epilog

These are plain text files containing html tags. The text in the prolog file is included as part of the html files just after the <BODY> tag. The text in the epilog file is included just before the </BODY> tag.

Control File Format

The control file consists of a list of options, one option per line. Each line is of the form: NAME=VALUE.

File options:
GEDCOM=<filename> Name of GEDCOM file (required)
OUTDIR=<directory-name> Output directory (required)
HTMLEXT=<file-extension> Extension of HTML files (defaults to .html)
INDEX=<index-filename> Name of index file (if desired)
GENDEX=<index-filename> Name of gendex file (if desired)
SURNAMES=<surname-filename> Name of surnames file (if desired)
Appearance options:
GEDCOMLINK=<filename> URL of GEDCOM file
PROLOG=<prolog-filename> Filename of file inserted after <BODY> tag
EPILOG=<epilog-filename> Filename of file inserted before </BODY> tag
LAYOUT=NORMAL|TABLE Layout style for parents (default NORMAL)
PLACESTYLE=FULL|FIRST|LAST Place name style (default FULL)
NAMESTYLE=NORMAL|FORMAL Indi name style (default NORMAL)
NAMETAGS=NO|YES Use name ids (default NO)
SURNAMESEP=<separator-text> Text that separates names in surnames list (default <BR>)
HTML attributes:
BGCOLOR=<color> Background color (default #FFFFFF)
TEXTCOLOR=<color> Text color (default #000000)
LINKCOLOR=<color> Link color (default #0000FF)
VLINKCOLOR=<color> Visited link color (default #000099)
Translatable text. The English language defaults are shown, but can be changed to adapt to any other language. If desired, abbreviations or symbols may also be specified, such as * for birth or + for death. HTML tags may also be used.
BIRT=<birth-string> Born:
CHR=<christening-string> Christened:
DEAT=<death-string> Died:
BURI=<burial-string> Buried:
MARR=<marriage-string> Married:
MARB=<marriage-string> Publication of the banns:
UNKNOWN=<string> (unknown)
NONE=<string> (none)
FATHER=<string> Father
MOTHER=<string> Mother
PARENTS=<string> Parents
CHILDREN=<string> Children
SPOUSES=<string> Spouses
OSPOUSES=<string> Other spouses
TITLE=<string> Family group sheet for family &1 in gedcom file &2.
(&1 is replaced by gedcom label for the family. &2 is replaced by the name of the gedcom file.)
INDEXTITLE=<string> Index of gedcom file
RETURN=<string> Return to
AND=<string> and

Sample Control File