in reply to How has Perl affected you?

May this thread live as long as Name Space.

TL;DR

Perl prevented me from being a bad architect (or an architectural slave in some office) and made me into a lousy programmer instead. I have no formal CS education.

Long version

Back in the late 80's as I studied architecture/urbanism, a CAD system consisting of workstation and software, peripherals and plotter easily cost about 75k$-100k$, which wasn't anything a student or architecture freshman could afford; we were designing on drawing boards. So a bunch of students, at the incentive of the unforgotten (for me, at least) Horst Rittel took on the task to develop a CAD system for architecture on the Atari ST. It was programmed in GFA Basic and was a 3d wireframe program. After playing around some time, I noticed some bugs and got the sources. Had no idea of programming, but ever since being a toddler I wanted to know how things work. Fixed some; got the idea of extending the wireframe model with surfaces defined by their edges, and there I went, reading "Computer Graphics" and spending days at the Atari, implementing a lousy hidden line algorithm (yeah, normal vector to an arbitrary perforation point onto a surface whose edges aren't aligned on a plane and such).

Task completed, I submitted the work to Rittels institute at the faculty. Got some points and was hired: document and administer the CAD lab of the institute, some Suns (1,2,IPC,IPX, later SparcStations 10).

First time at a UNIX system, had no idea. Spent days and nights reading manual pages, following SEE ALSO. After some time, things fell into place.

At the institute, we spent a lot of time handling complaints of angry students which walked up to the office telling us over and over again that they had worked hours on their project, only to find out that they couldn't save their work, even without being over quota hard limit. We had a SPARCserver 300 with 16MB RAM sitting in a dark corner, which held the NIS/NFS tables, but too little disk space. So, the workstation disks also were used to hold user's home directories, which were transparently automounted to any other workstation as needed.

Disk space was terribly expensive at that time, and so the disks were over-commited (wrt to quota hard limit). We needed some monitoring, and a cleanup tool to free abandoned scratch areas, which could be huge (for some value of huge of that time).

Sweating over data collection and fiddling with sed, awk, cut, tr and whatnot (all in the dratted C-shell) a coworker noticed, walked up to me and asked me "did you hear of perl? that could be something for you."

Gophered the stuff, compiled it and had it working. Wow. This was perl4, patchlevel 36 (patchlevel 19 on the Atari).

Once I got a grasp on it, gathering and munging data was easy enough. But what about cleanup? The proactive part of the task... I wrote a perl script which mimicked a tcsh, complete with tab completion (was the GNU readline library out yet? Can't remember, since I didn't know at that time) and whatnot, which had a restricted set of commands: ls, cd, tar, gzip, mv, rm, and some. Running per cron as root, it would install itself as the infringing user's shell and persist, until the user had cleaned up his crap. Cleanup had to be done by the user themself, since we had no way to tell what of the users crap could be deleted, except the obvious stuff.

Since then I'm hooked on perl.

Later, one of the instructors of the institute walked up to me. He had a small startup, and looked for people helping at a contract: reorganize a workshop of architects, replacing a Siemens Quattro against a HP-UX workstation network and porting software from the former to UNIX/X11, converting all databases. "Why not?" I asked myself, instead of not negating and just asking "Why?".

The office software was applix, and since there was no database decision (that was dependant of the decision of their CAD/AVA supplier), I wrote the database engine in perl, using Berkeley DB and interfacing applix. Being at holidays in Ireland, an emergency call came in: a bug! Wrote the patch by hand, submitted via fax. They typed it in, issue fixed.

And then more things happened. Perl didn't teach me programming, but it enabled me to teach me programming.

Yes, I learned more languages since then, but none which gives me more leverage.

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'