Programs / Kajetan Hinner \ Scripts

Programs and Scripts

Note: All programs and scripts are provided as-is. You can use them for free, but don't make me reliable if something is not working as it should or you expected. I appreciate it if you notify me in case you found something useful.
Nearly all programs and scripts are written in perl. Perl is a powerful language which is easy to learn if you know the basics of C and Unix Regular Expressions. If you need more information on this, visit the Perl homepage.

On most systems you need to rename all files you d/l from here from .perl to .pl! It was necessary to rename them because some systems wanted to execute them as .pl files.

Mailing List Analysis using SQL DB

 This command line program (Perl) parses large files with collected E-Mails from Mailing Lists. In the first stage, they are stored in a SQL DB (I used Debian Linux - Sarge testing and MySQL). In a second step threads are computed, in a third step you can export Edge Lists for further network analysis using programs like UCInet. You can use a SQL browser to get statistical data of the authors and threads of E-Mails. There is a documentation inside the program. It is in my view only useful for Social Scientists analysing mailing lists. You can download it here.

RST - Rostock Survey Tool

This program enables you to easily design online surveys or order forms. It has grown so big that it was necessary to introduce own pages for it. Try this link to find out more.
Es gibt auch eine deutsche Seite dazu - RST eignet sich für die einfache Durchführung von (unterschiedlichen, mehrsprachigen) Online-Umfragen z.B. in der Soziologie oder Marktforschung.


This tiny perl script provides a solution for the following problem: You have an existing document covering several pages. You wish to print additional information on each page, like Page numbering, Author text, etc.
You can use this script as template and apply changes when needed. In this current version only HP PCL printers (i.e. Laserjet 5L) are supported.


How many of the german domain names (*.de) are hosted in germany and how many are truly located somewhere else? This I wanted to know and this program turned out to be very helpful. It requires two more files: One is, which is also supplied here (only for german domains yet). The other file needed is your input file which holds all domains you want to know where they are located. then does a traceroute to every domain (first with www prefix and if this does not work out, plain domain as written in the file).
Three output files are created:
  • The .out file contains the most valuable information, which can be processed using a statistical analysis program like SPSS or visualization software (i.e. Excel): Every domain is listed with Status (OK, not connected or unable to reach right now), Country (where the host is placed), TLD (Top Level Domain, last readable domain name of your searched domain, i.e. *.net), Hops (Number of hops to reach the specific domain) and rt-time (Round-Trip time: mean, calculated from max. 3 packets sent by traceroute). If you are not familiar with those terms, please read the manual to traceroute first (tracert.exe if you are using DOS/Windows 95).
  • The .error file lists all domains which could not be reached or were not connected and also prints the traceroute of this domain. This helps you to easily adapt the file or to insert the correct location in your .out file.
  • The .log file contains all the information of the .out file and the traceroute output for each domain. If you are interested in different internet routings, you can look for my outputs which are available using anonymous ftp here.

  • To create the domain names, I took all german domains from and weeded those files from all other information than domain names with


    This perl script reads the file Domains.txt in your current directory and extracts all domain names, writing it to Domains.weed. Currently only working for german domains only, but easily  adaptable for other domain names.


    This script is randomly selecting a certain number of lines from an ASCII input file.

    Scripts concerning IRC statistics


    This is the core. It behaves like an IRC user, but you can program it. Right now it asks the server every five minutes for users, channels, and servers connected. This data is appended to a file. also uses RRD (Round Robin Databases) and mrtg.
    You can easily change this script for your special needs.
    Sometimes the program crashes (due to various reasons). For starting up again, I used a script called by crontab every five minutes. Socip.botchk is also available.

    There are several IRC servers out there. Some include new commands. The original Net::IRC module, which I used, does not react to all commands. That's why I changed and patched the original Net::IRC code. You can find this enhanced version of Net::IRC here.


    This script expects an ircII logfile as inputfile, which is scanned line by line. Certain outputs of ircII are recognized and the specific data is stored. It knows i.e. several date-output formats of several versions of IRC. Right now it knows the /lusers, /list and /date command of ircII.
    After all data is read, reports are created collecting all User and Channel info. Those reports could be used in Excel or SPSS.
    Moreover, knows to handle them as well.


    This is for use with mrtg3. Report files like those created by are transferred into a Round-Robin-Database.


    This script uses Round-Robin-Databases created with or and plots nice graphs. Moreover a sample HTML-page is stored, which accesses all new graphs.

    Ancient programs for C64 and Amiga

    This information is not connected to Rostock University.
    I wrote several programs for Commodore C64 and Amiga Computer. All are listed here just for historical reasons. If you need one, please send mail.

    C64 RAM Test, Eprom

    Still needed is C64 RAM Test. This program sits in an EPROM which replaces the C64 Operating System Eprom. It is designed that only absolutely necessary chips are needed. It runs without a working C64 RAM, CIA, VIC, etc. When you turn the C64 on, 8 green numbered sprites are displayed on the screen, each one representing a Bit and a certain RAM IC, respectively. Then the RAM test continues, and if one bit fails, the corresponding sprite will turn red. If the test should work OK for some time, you can press space and a more comfortable RAM test program will turn up which runs non-stop, testing nearly all the 64K and displaying wrong bits. If you want to buy this program on an Eprom, please contact me.

    C64 Disk Manager

    German Disk manager software. Directory of an inserted disk is read, you can follow and alter each used sector. Very easy to use program.

    C64 Software Verwaltung. C64 Software Manager

    Creates database of all C64 software. Is able to read Directories of disks and tapes (also Turbo Tape format).
    Special system which uses a custom format for every VC 1541 data disk and is able to store 300KB of data that way on the database disk! Very fast search option.

    C64: Vizawrite to ASCII text converter

    This perl-script is able to convert files written with Vizawrite (C64/C128) to ASCII text files.

    Amiga: GASS (6502 cross-Assembler).

    Written in C, released on aminet ages ago. Allows you to write C64 programs on the Amiga using it's superiour editors (Cygnus) and compile lightning fast. Supports bank-switching.

    Amiga: Varus network

    Network linking one Amiga (server) and up to nine C64. Allows data transfer and Sim-Screens (you can see C64 screen content on Amiga screen of selected machine and keystrokes on Amiga are transmitted to C64). Requires special hardware on Amiga (connected to its parallel port) and C64 (Expansion slot). As far as we (including my former programming partner Mathias Kettner) know, the only network created between C64 and Amiga that deserves its name.

    Recently developed scripts helping with Fritz!Box address book import and Mac OS X filename transformation

    Fritz!Box address book script CSV import

    You can use this script to import .csv-data (name, phone number) to an Fritz!Box address book. The modern Fritz!Box is able to maintain several address books, so you can define one "personal", one "work", one "kindergarten parents", one "family" address book. It is useful to create those .csv files and then use this perl script to create an .xml-file which you can import into your Fritz!Box.

    Perl script to transform and rename Mac OS X UTF encoded filenames

    There are two different possibilities UTF-Filenames (and directories) can be written, for example German Umlaut "a¨": "a" with two dots above (two characters) or simply one UTF-code "a". Sometimes you can recognize this when renaming the file with this Umlaut, you try to erase it, but you need two backspaces, after the first stroke an "a" appears. This is really very strange and took me weeks to find a solution: All files and directories with special characters to be found in MAC OS encoding only (three dots for example as one special sign) need to be replaced with "normal" characters. There are many more characters treated in the script, also filenames starting with "-" are replaced with "_", because some storage providers do not properly backup those files.

    The script does all the renaming. After this your data should be copied to other OS systems like Windows or Linux without the previous problems and backup software should also work then.

    The script runs in a Mac OS terminal window using built-in-perl. So it works out of the box without need to install additonal software. Every file is saved also in a Database file - using also built in SQL lite technology. There are log files written for each transformation (UTF characters, files starting with "-", files ending with space, files ending with dot, .tif-files without extension can be automatically added .tif etc.).

    There are also modes where you can read the database file and search for sha256 checksums to find the file location and how it needed to be processed. Moreover you can find duplicate files using this method.

    Last changes: June 14th, 2019
    This page is  (c) Kajetan Hinner 1998-2019 unless otherwise stated. Without written permission it's not allowed to use any of this content (including links) commercially. Non-commercial use is encouraged .It's not allowed to make profit out of my work.

    Follow this Link to get to my homepage.