In the Practical Perl Programming elective (which, incidentally, will be offered again this fall semester), students are graded based a midterm test, a final test, and a course project. One of the projects was to list an audio CD's tracks according to the information available at CDDB or FreeDB.
Many students found a major stumbling block - the Audio::CD Perl module (which we had recommended) did not quite work on Windows. There were a couple of Perl modules that did the job on Windows only, using MCI and stuff, but they were also somewhat unwieldy to set up and use. So, it seemed that the only submission we would get on this project would be one from a very courageous student, who had written a small Perl program using the Audio::CD module, and had never actually tested it - for lack of access to a Linux machine. She was kinda frightened when stepping up to us at the exam, but I actually admired her courage&8230; and amazingly enough, the program worked great, with the exception of one or two minor problems that were mostly due to the badly documented Audio::CD interface.
Interlude (and yes, I know that the interlude does not usually follow the prologue... so what?)
And then another submission for the same project came along - Lina had found the Net::FreeDB module, which purported to work on both Windows and Linux. So I happily downloaded it (well, fine, so it wasn't in the FreeBSD ports collection, so I'll build it from source using BSDPAN), extracted it, ran perl Makefile.PL…
Unable to determine OS, Exiting
We probably shocked a couple of students poring over their own Perl tests and projects at the FMI lab, when we both laughed out hysterically at this message. Okay, fine then, another reboot to Debian, and her project seemed to work just fine. Still, something kept nagging me in the following days and weeks about this module not being available for FreeBSD…
Finale (or should that be a Grand Finale? Nahhh, not bloody likely…)
So here it is - a port of the Net::FreeDB module to FreeBSD. Here's the source patch, the port is already in the ports collection, and for the impatient, here's a tarball of the port if you'd use it before your next CVSup run :)
I've sent the patches to David Schultz; here's hoping that the next version of this module will run on FreeBSD out of the box! And thanks to Lina for pointing it out - and for the laugh at the "unknown OS" bump :)
And in case you're curious...
[roam@straylight ~]> perl -MTime::Human -e 'print humanize(localtime())."\n"' exactly five past six in the evening [roam@straylight ~]> date Fri 25 Jun 2004 18:05:27 EEST [roam@straylight ~]> perl -MTime::Human -e 'print humanize(localtime())."\n"' just after five past six in the evening [roam@straylight ~]> date Fri 25 Jun 2004 18:06:32 EEST