mowyw - Mowyw Writes Your Websites (Offline CMS)

Welcome to the project page of mowyw, an offline Content Management System (CMS).

News: mowyw is on its way to the Comprehensive Perl Archive Network (CPAN) under the name App::Mowyw. Please help by testing the distribution, and by reporting any problems you encounter with it.

What is mowyw?

Mowyw is a command line driven offline CMS that processes HTML files with a few special syntax elements.

Think of it as a kind of preprocessor system specifically designed for web pages.

It uses a simple syntax and needs very little time to get used to.

mowyw is written in Perl for Linux and other POSIX compliant systems, but it should work on all platforms that perl runs on, perhaps with slight modifications. It is Open Source Software (GPL) and free of any charge.

What is it not?

mowyw is not an online CMS with a web frontend, SQL backend, guest book and other "fancy" whiz bang features.

Syntax Example

Entire files can be included via the [%include name%] or [% include name %] directive.

A menu foo can be included with the item bar as the active item via [%menu foo bar%]. The corresponding menu file might look like this:

    [%item bar <li><a href="bar" {{class="active"}}>Bar</a></li>%]
    [%item baz <li><a href="baz" {{class="active"}}>BaZ</a></li>%]

Where the parts between double braces {{ ... }} only appear in the final file if the menu was called with the matching label.

Please note that previous versions only used double square brackets, which collided with the closing CDATA-declaration from standards compliant xhtml and XML documents.

In Versions 0.4.0 (and higher) you can use either [[[ ... ]]] or [% ... %] to delimit tags.

Starting from Version 0.3.0, mowyw can perform syntax hilighting for you, if you have installed vim and the perl module Text::VimColor. Simply put [%syntax html%] HTML-Code here [%endsyntax%] in your source file, and any HTML code between the start and end tag will automatically be escaped and syntax hilighted.

All languages and configuration files that vim supports are accessible from mowyw, currently that are over 480 different formats, including prominent examples as C, C++, Java, HTML, CSS, Javascript, Perl, Python, Ruby, PHP, Eiffel, matlab, Ada, awk, haskell, Lisp, and many more.


You can read the README file and the mowyw manual page online, and you can download the tar ball and take a look at the distributed examples.


mowyw is in active development, so don't expect too much. Use this program at your own risk, and read the accompanied README file before running it.


You can get the latest version here (recommended).

The latest (non-release) version of the source code is available from github.

Older versions are/will be available as well:

Sites that use mowyw

The following sites are built with mowyw:

Do you know more? Please let me know!

Release History/Changelog

This is not reliable or complete, in case of doubt consider the Changelog file, or the commit message in the source code repository.

  • 2011-03-30, mowyw-0.6.2 Supplied missing example files; more robust XML processing
  • 2011-01-28, mowyw-0.6.1 Remove a warning from readvar
  • 2009-01-05, mowyw-0.6.0 Report line numbers in error messages
  • 2008-07-27, mowyw-0.5.2 Configurable regexes that determine which files to process
  • 2008-04-12, mowyw-0.5.0 Data sources, bind and for statements. Major internal overhaul, which allows for much easier testing. Many more tests.
  • 2007-06-06, mowyw-0.4.0: Optional [% .. %] syntax.
  • 2007-03-28, mowyw-0.2.0: nearly complete rewrite using a lexer and a recursive-descending parser; introduced the [[[verbatim $marker]]] construct
  • 2007-01-10, mowyw-0.1.0: syntax change from [[...]] to [[[...]]]
  • 2007-01-04, mowyw-0.0.3: support for options to omit header/footer inclusion
  • 2006-12-31, mowyw-0.0.2: nested menu items work
  • 2006-12-28, mowyw-0.0.1: Initial Release