Hier findet sich das eine oder andere kleine Programm zum Herunterladen - meist "open source" und "public domain". Die jeweilige "freie" Lizenz ist angegeben.

Basierend auf einer Idee von Mark-Jason Dominus wird hier py (der Name hat historische Gründe, siehe plover) angeboten, ein kleines Set von Programmen welches analog zu yacc, bison usw. aus einer Grammatik einen Perl-Parser baut. Dabei benutzt py das Programm GNU bison in der Version 2.3 bzw. 2.7, um eine Beschreibung des zu bauenden Automaten zu erhalten und diesen dann in einem Perl-Modul zu implementieren. Die ursprüngliche Version dieses Werkzeuges stammt aus dem Jahre 2001 und hat sich in vielen Anwendungen als sehr nützlich, flexibel und stabil erwiesen.

Templates, Makros oder Schablonen sind auch heute noch unverzichtbarer Bestandteil von Software. Daher verwundert es nicht, dass im Netz, etwa auf CPAN, eine Reihe von Modulen für diesen Zweck zu finden sind, das Bekannteste ist sicherlich das Template-Toolkit. Es hat einen in der Version 2.26 einen Umfang von 2.6 MB Source Code.

Hier wird in gut 100 Zeilen und etwa 2.5 kB ein vollständiger Template-Mechanismus für Perl implementiert, welcher ohne eigene Template Sprache auskommt und in der ersten Fassung aus dem Jahre 2002 stammt. Die Idee die spracheigenen Mittel - in diesem Falle die von Perl - für die Template Sprache zu nutzen sowie die des "eval" um ein Unterprogramm dynamisch zur Laufzeit zu generieren gehören zur "Folklore" innerhalb der Lisp- und Forth-Community und stammen aus einer obskuren - vermutlich russischen - Quelle aus den 1960er Jahren.

Perl Templates

Die entscheidende Idee besteht darin, aus dem Template-Text eine (anonyme) Subroutine zu bauen, welche wenn sie - mit den entsprechenden Argumenten - aufgerufen wird, den gewünschten Text ausgibt. Dazu werden alle Zeilen des Template Textes entweder Teil der Subroutine - falls der Zeile ein '!' voransteht - oder aber in ein "print" verpackt. Die Magie ist, dass Perl's "print" automatisch die Variablen interpoliert, also alle Vorkommen etwa von "$text" durch den Inhalt der Perl Variablen gleichen Namens ersetzt. So wird keine eigene Template Sprache benötigt. Sollte es nötig sein, kann durch einfache Änderungen auch der Template Text mit einem '!' beginnen.