Home library catalogue system, written in Perl.
Perl CSS Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



I wrote this early in 2001 so I could manage my personal library. That was BEFORE I went to library school. There were a couple of programs out there for managing personal libraries, but none suited my needs, so I wrote this. I had never taken a cataloguing course, knew nothing about MARC records, and wasn't a very good programmer. (The first two changed, the third is still true.)

If I were doing this again I'd do it very differently, or I might not do it at all. I might use LibraryThing to manage my collection. If I wrote something for myself I'd use Python or Ruby with a good web framework. But I did this in 2001, before any of that, and I've used it ever since, and it does its job: I know what I have and where it is.

I don't expect any interest in this, but I'm putting it on GitHub to make my life easier, and because there's no reason to keep it private.

Warning: This is not good Perl.


Since I don't expect anyone to actually run this these instructions are not overly helpful.

How to set up your web server

Set up the hostname 'library' in your DNS. I use /etc/hosts and have it at the same IP number as my local machine. Because Apache will be configured to look for a virtual host with that name, this will work:

<VirtualHost *:80> ServerName library ServerAdmin webmaster@localhost

DocumentRoot /var/www/library/
<Directory /var/www/library/>
	AddHandler cgi-script .cgi
	Options ExecCGI FollowSymLinks MultiViews
	DirectoryIndex index.cgi
	AllowOverride None
	Order allow,deny
	Allow from all

ScriptAlias /cgi-bin/ /var/www/library/cgi-bin/
<Directory "/var/www/library/cgi-bin">
	AllowOverride None
	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
	Order allow,deny
	Allow from all

ErrorLog /var/log/apache2/library-error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/library-access.log combined

Put all of the Mrs. Abbott files into /var/www/library, set up Apache, run 'apache2ctl restart', and everything will probably be OK. If not then a bit of fiddling will do it if you keep at it, I'm sure.


In Ubuntu 17.04 Apache stopped seeing the MrsAbbott module in the =cgi-bin= directory, so I brute forced it:

sudo cp -r ~/src/mrsabbott/cgi-bin/MrsAbbott* /etc/perl/

How to set up the database

Of course you'll also need to set up the database before you can actually add or view any books. First, create the database in MySQL:

mysql -u root

create user 'marion'@'localhost' identified by 'XXXXXX'; create database library; grant all privileges on library.* to marion; quit;

Now create the tables and initial data.

TODO: [Put the default insert script here]