In letzter Zeit bin ich von Dancer, einem Web-Framework für Perl, immer mehr angetan. Man kann damit in ziemlich kurzer Zeit in klarer Syntax Webanwendungen schreiben.
Es muss sich dabei nicht um eine Webanwendung im klassischen Sinne handeln, also eine über den Browser benutzbaren. Stattdessen habe ich z.B. mit Dancer und AnyEvent den sogenannten npmd gebaut, einen Daemon, um den NPM2000, der 8 ein- und ausschaltbare Kaltgeräteanschlüsse bietet, im RaumZeitLabor zu steuern. Ein Daemon ist hier sinnvoll, weil der NPM nur genau eine Verbindung gleichzeitig abkann und eine Weile braucht, bis er merkt, dass man diese geschlossen hat. Der npmd hält also dauerhaft eine Verbindung offen und serialisiert die Anfragen an den NPM. Für eine HTTP-API mit Dancer habe ich mich entschieden, weil man den npmd dann schön von überall aus benutzen kann:
# mit IO::All in Perl: '1' > io('http://firebox:5000/port/1');
oder
# Auf der Kommandozeile: curl -d 1 -X PUT http://firebox:5000/port/1
…oder natürlich im Browser (wobei man da derzeit nur den Portstatus sieht).