My very first exposure to Perl was my boss wandering into the cube and asking me to help him figure out what wasn't going on in his code. We were running a Mail Transfer Agent written in Perl 5.005--; a Perl 4.x application that had been "converted" to Perl 5.x by changing the shebang line and praying a lot. We had a spammer hitting us, and Tomaso, after talking to the Vendor for a couple of hours had found a hook that could be used to add User Code in a callback. The code was getting called, but his regex wasn't working. We spent and hour or so with me playing Socrates ('what does this set of characters do? Are you sure, might it not be doing that?'). We ran through a quart of coffee before we finally had something that would black-hole some of the spam some of the time. It was running about 20% false positives, so we had to monitor the 'black-hole' file and re-inject the valid messages into the stream below our hook. I spent the rest of the afternoon curled up with Tomas' copy of the Llama Book (second edition) and about 2200 I came up with an index() and substr() solution that seemed to produce fewer false positives. The following morning we took another quart of coffee and romped through my 'solution' and decided on the basis of "it's easier to read, it's got fewer statements, so it ought to run faster" to try in out over lunch. I crashed the MTA at 1201 (I said is was a Perl4 app....), but we figured it out and brought the Mail System back up around 1345. And we started seriously black-holing the spammer, (success!!) and only two false-positives in the first hour. We shipped both code-fragments back to the Vendor for review. They cleaned them up and added them to the User Contributed Routines of the next release. I spent my spare time during the next three weeks reading the Llama (twice) and the man()/PerlDoc. It's been all down hill from there.... ----

I Go Back to Sleep, Now. OGB

I was doing some technically driven customer service stuff at what was at the time the hottest Internet company in the world. I saw another employee heaped with accolades on the basis of things achieved with Perl. I had been a 10 year old hacker who did a bit of programming in high school but drifted away because PASCAL and friends just weren't interesting to me. So I thought, I'll see about this Perl stuff. Two excruciating weeks—of reading the first three chapters of the Llama over and over—later I had finished my first "production" script; a shipping calculator. It was finished the night before the shipping prices were to change. It went into use the next morning because it was drastically needed and as big as the company was it was still in start-up mode so some dummy from customer service could sneak a script into use for 200+ employees. I was, strangely enough, thinking about it yesterday. It was something like 50 hours (it was two weeks of time after completing a 10-12 hour work day) of exhaustion. It was perfectly functional but much more verbose than it needed to be (lots of flat arrays where something like a hash of hashes of arrays was really wanted). All that crazy effort and lost sleep. I could probably rewrite it now in 30 minutes. But this is exactly what I love about Perl and why I've only had one job in the last 10 years which was not mainly Perl work. A novice without the benefit of perldoc or man or any help other than a book which took it for granted that I understood what was going on half the time since it was exactly the same as in POSIX and sed and… Perl is both simple and terribly difficult. It's rigorous or absurdly loose. It's sleek and clean or unrecognizably dirty. A functionally identical program can be written by a solid Perl hacker in 30 minutes and 20 lines or by a beginner in two week s and 200 lines. I left off study of computers and biology and any number of other things like linguistic and astrophysics for writing and art. When I discovered Perl I knew I'd found a bridge between the worlds of my chronic dilettantism. I regularly feel gratitude to the great folks who work on the core, the CPAN, and this terrific site. :)

When I could start answering questions in comp.unix.questions in fewer lines of Perl than Shell, and I was a pretty good shell programmer. :) -- Randal L. Schwartz, Perl hacker The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

Way back, university, CAD lab architecture: a SPARCserver 300, around 10 SS10, some IPC/IPX, way too much students and too little storage. We had home directories on the server and on the workstations, automounted as appropriate, to squeeze every bit out of the hard disks, and regular complaints of students not being able to save their files after hours of work, because somebody else didn't clean up their scratch. Quotas were not feasible because the temporary requirements of space rendered hard and soft limits useless. We wrote scripts collecting disk usage for all users, so we knew about the sinners and sent mails but more often than not they were ignored. Writing those scripts I was fiddling with transformations, calculations, sed, awk, cut, expr and what not, and a coworker said "may be perl is for you." I tried it. Geez, how easy it was to generate reports with format. So some LART was needed. Shutting out the evildoers was no solution, they would walk up to the staff and complain; and we couldn't decide which files to delete. "Let's force them to do that themselves", I said and wrote a perl script which did the du -s collecting and reporting via mail and rewrote their startup scripts. So the next time they logged in they were presented a lonely xterm in which this script was running, faking a tcsh, complete with readline, tab completion and alias support, but allowing only such commands as were useful to clean up their mess. After they had lowered disk usage sufficiently, the script would restore their environment and they could work as usual. That was big fun (perl4 patchlevel 36) and got me hooked. It was amazing what you could do with perl, even without CPAN and modules.

I started programming with QBasic that was shipped with Windows 3.11. After some time I came up with some code to read a file, and do a basic substitution encryption. It was three pages on the 80x25 screen, and I was proud. So I showed it to a friend, and he told me that it could be done in one line of Perl. I didn't believe him, but he showed me that it works (I don't remember what it was, but know I think it must have been perl -pe '$_=lc;tr/a..z/thekyhr.../' or so). I tried a few other languages, notably Pascal, C and Eiffel, and I always found string processing to be too cumbersome. Now and then I remembered about that magic Perl thing that did complete programs in one line, and I decided to learn it. So I bought a (really crappy) book and started to program. It has since then spoiled me, and I've found no other programming language that I liked better.

My first near miss with perl, was circa 1998. Long story short: I was systems architect on a project to distribute, install and maintain the software stack, from the OS on down, to 600 wan connected servers and their 40,000 clients. One of my team suggested Perl (4) for use for one small part of the distribution & installation monitoring system. At my request he showed me half a dozen example scripts culled from the web for my appraisal/education. On the basis of a quick read-through of the first 3, I dismissed it as "read-only line noise", I turned him down and mandated Rexx be used. Better the devil you know than the devil you don't. My second encounter was a request to assist a (distant) family member in sorting out their attempt to cash in on the dot-com boom. I took a look, realised that I was out of my depth as far as the Perl code was concerned and paid a friend to deal with the distant relation's problem. (It was in reference to this problem that I found this place--see my early posts!). Despite taking the easy route (Never do paid work for family!), I was intrigued enough--and uniquely, had time enough--to cause me to investigate this PERL stuff further. My conclusion: Perl is unique! Amongst the hundreds (if not thousands) of computer languages, it is unique. In that it favours Practicality over either purity or elegance. After suffering the whims and capriciousness of a dozen or more "bosses" over the preceding 20+ years, I found home. At last! A language that preferred practicality over purity; solutions over dogma. I was more than intrigued. I was hooked! My first commercial project. The brief was simple: Spider the web (all of it, though it was smaller back then); digest it (as in MD5); index it; and categorise it. The theory was good. The implementation (in Perl) was good. The finance was bad. (The bubble burst!) Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error. "Science is about questioning the status quo. Questioning authority". In the absence of evidence, opinion is indistinguishable from prejudice. "Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

We had two Word documents describing a couple of in house APIs and related stuff that we wanted to move over to a TWiki based Wiki. Someone suggested to me that Perl was good for that sort of thing so I learned Perl. Shortly after starting I heard of PerlMonks and the rest, as they say, is history. Oh, and yes, I did get the documents translated even to the extent of retaining most of the original links and document structure. Although that first project took far longer than it should have, even considering I was learning the language as I went (I kept 'improving' the translation), Perl has repaid the effort many fold since. True laziness is hard work

My perl immersion began by working on someone else's perl code in 1995; the job was to condition newswire text for "spoken language modeling", which means: convert all number strings, abbreviations and symbols into the fully spelled-out words that people would say if they were reading the text aloud (and there was an option to spell out the appropriate pronunciation for punctuation marks -- e.g. "open-single-quote ... close-single-quote"). I needed to adapt the code so it would work on a wider variety of input text data (a lot of hand-tuning involved). Luckily for me, the author of the 8-or-so interrelated Perl-4 scripts I was given really knew what he was doing. I spent most of the first week or two referring constantly to the "perlfunc" and "perlvar" man pages to figure out how the code worked. I already knew regexes from grep and awk and some sed usage, but the "perlre" man page was like a full course of steroids. Between the vast array of built-in functions, the many enhancements to basic regex usage, the kitchen-sink/use-whatever-works-best mindset, and the fully-detailed-yet-coherent man pages, everything just made sense. (Update: well, everything except "pack" and "unpack" -- I didn't really grasp the man page for that until much later.) I started writing perl substitutes for (combinations of) basic shell tools because it was quicker/easier/more effective than repeatedly doing lengthy pipeline commands or adding more shell-based functions and aliases in my .bashrc file (I had always been averse to shell scripting). I was deeply grateful to be able to do more of the complex tasks with less dependence on C, and I stopped using awk altogether.

In 1994, I had some scientific (computational chemistry) data to process. The lab didn't have a C compiler and the problem was a bit too complex for sed/awk/sh. Remembered Perl from a couple years earlier and was now desperate enough to actually try it. Worked like a charm (obviously). Soon wrote a web-based DB for the departmental library from scratch ... then discovered the magic of modules like DBI when I couldn't maintain my own spaghetti-code just a year later. After CPAN, I was fully converted and started using Perl for nearly everything possible.

In 1996 I started working with a TV character generator named Antero (running on SGI machines) for sports broadcasting. It came with a rough automation system with examples in perl 4. I started writing an automated statistic system around it for basketball just for the fun of it, until it became a reasonable demonstrator.

So in 1998 I finally led computer graphics programming and display automation system for Football (soccer if you want) World Cup, though the main GUI was finally in visual basic (iiiirk) and the statistic management GUI in Java, it achieved to convince me of Perl's superiority :)

I was writing an IRC-related application in C#, and I was parsing the protocol with regular expressions. I didn't know them very well, so I bought a copy of Mastering Regular Expressions. It used Perl for most of the examples (and its largest chapter is about Perl's RE support), and I'd heard Perl was in its own class with regard to text manipulation, so I gave it a go. Turns out I could eliminate lots of code, due to Perl's terseness (yay Huffman coding), and replace all of the network code with some POE magic. As for regular expressions, I learned that one shouldn't use those to parse IRC (or most other protocols), but rather use some well-tested parser. However, the best module for the job, the one I ended up using, actually uses regular expressions under the hood. :)

I was a windows user for many years, but interested in Linux and wanted to do more with it. Got the opportunity a few years ago and started working at an ISP supporting windows and linux servers as part of their NOC team before moving up to Sysadmin initially as a junior, but very shortly thereafter as a full one having developed my linux skills and shown aptitude When I joined sysadmin I came across these lovely old hacked-together solutions. Stuff that is (was?) ingenious, and perfect at the time it was created, but by now utterly bizarre and could be done so much easier and with less chance of catastrophic failure.

A fair bit of my role revolved around keeping these old systems working whilst a fancy new one was built from scratch (long and complex process), and I kept coming across these perl scripts. I'd done VBA programming at school, and knew Spectrum BASIC, but that was it. Perl is fairly logical though, and even though the scripts were rarely commented I could generally understand what they were doing (I'd usually run the regexp past more experienced guys in my team for a quick answer), and occasionally tweak them to fix problems.

I could see that perl was effective, powerful and something I could leverage to make my life easier, and frankly I'm a lazy sod with a phobia of repetitive work. If I could spend 30 minutes doing some bash scripting to save myself 15 minutes of repetitive work I'd do it, because sod's law says I'd have to do the repetitive work again at least a few more times.

I had a week of unused holiday and the end of leave year was coming up, so I decided "Sod it", bought the Llama book, booked the week off work and ploughed through it, setting myself a target of xx chapters a day.

Then came the biggest hook. After 3 days my brain felt a little stuffed and I was getting bored with the exercises in the book, but felt I had a pretty good graps of the subject.

I'd been dealing with spammers on a regular basis and knew I was looking for certain stuff in the exim4 log that exipick couldn't tell me, and the final two days of the working week were spent writing a perl script to do the hard work for me and e-mail me the results. Shoved it in cron and knew I was in love from the first e-mail :) That cron'd script meant a month or so later on I was able to use the time saved to set about identifying the real cause, which I did successfully and meant my first, self-written and dearly beloved script was very obsolete. *wipes a tear from eye*

Working on a branch automation project at a bank I was analysing log files and sniffer traces. Awk was what I knew and used. My contemporaries were importing into spreadsheets and bogging down. A consultant was advising we contract with him to put it into a database and develop reports. I was at least able to get some useful data extracted. We had a problem to solve. The developers asserted the network performance was killing their application. The network guys (which included me) asserted the development team was doing some fundamentally flawed things. Since awk did not have an internal sort I was sending the data to the system - MS DOS in this case - to sort the data. The volume of data was greater than the available RAM and the DOS sort needed to stuff everything into memory. I'd heard of Perl and had be vowing to learn it. My copy of Progamming Perl was woefully underused. Checking it I did see that Perl had its own sort. A quick test program showed that Perl could and would sort my data set. I applied Perl to the problem at hand. Spent one weekend with Learning Perl dutifully doing every exercise. Applied Perl to every problem I could figure out how to address in the language. Didn't look back. As to the developers vs. network guys battle … I showed that, among other things, the developer's programs were opening, reading and closing the same file 4.77 times a second for the entire duration of the run. Made the spiffy new 486s crawl like an original XT.

Be Appropriate && Follow Your Curiosity

4.77 times a second ... original XT. The clock speed of the 8088 in the original IBM PC was 4.77 MHz. Coincidence or no? Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error. "Science is about questioning the status quo. Questioning authority". In the absence of evidence, opinion is indistinguishable from prejudice. "Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Coincidence indeed. We howled in laughter over it, when we weren't despairing over the application performance. The coincidence also assures that I'll never forget the incident.

Be Appropriate && Follow Your Curiosity

I was a consultant at Credit Suisse in London in 1999 and I was migrating CSFB's global network from Novell to Microsoft. I had to do things like remotely query user registries to figure out what applications they were running and do things on Novell and windows drive mappings and log stuff into excel spreadsheets based on the data I found. Just a whole mess of cross platform tasks on Novell and Microsoft servers and on the local workstation that was executing the tasks. I found Active State Perl to be invaluable for this.



The next step was to get a linux box under my desk running mysql and instead of logging data into excel I was storing it in MySQL. Linux wasn't allowed on CSFB's network at the time so I snuck it in.



Soon after I landed a job at eToys.com which was a huge mod_perl shop and ended up running the European warehouse management system which was written in Perl. Perrin Harkins and the rest of the web team impressed the hell out of me with what they were achieving on the web front-end. It was then that I realized how scaleable Perl really is.



Since then I've launched around 7 startups of my own all running mod_perl. With the latest Ruby craze I simply am not interested because I know perl can scale effortlessly and mod_perl is now incredibly stable. While the Ruby guys are struggling with Memory leaks or MySQL integration issues, I'm just writing new features.



I'm the founder and CEO of Feedjit.com. We serve over 400 uncached page impressions per second and process around 10,000 mysql TPS on a tiny mod_perl2 cluster. On an average day during peak, the front-end server has around 12,500 concurrent connections.



Mark Maunder.

an' den? Tye Congratulations you won the ReplyGolf competition for the post! While the average keystroke count for replies was 1277.438 (as of 19:00 HST 4/25/09) your reply was an astounding 10 keystrokes! However, because both you and shmem mentioned format, I did pick up Learning Perl and Programming Perl again to review the power of format. I have to confess, I skipped it because working in Windows I wasn't (yet) able to print a report. C'mon tye, tell us a story! Pleeese! How did format solve a problem? <> generator

I was programming on OpenVMS in 1996. I'd done a few data munging tasks, nothing big. We had this system that mailed a lot of quality reports on chemical samples to a bunch of different people. Maintenance of the mailing lists and the like was a pain and mail servers were sometimes unreliable. A customer asked if the reports could be put on a website. I thought about it for a few minutes and realized that I could dump the reports into directories, formatted with links for a lot of the interesting information to cross reference them and index pages to bring up various views of interest to various communities. It was just a data reformatting problem, no CGI was required. It was a huge hit and it took me practically no time to put together. The fact that Perl was working on OpenVMS was a big part of the win here. Perl is ubiquitous, still. Today, I do Unix and it's installed on every one of our Unix systems by default. That's not true of any other scripting langauge and I don't see that changing. I wonder if that Perl6 will ever enjoy that kind of penetration, no matter how perfect it is.

I wonder if that Perl6 will ever enjoy that kind of penetration, no matter how perfect it is. That will mostly depend on the dedication of those who run these "unsual" operating systems. Currently most people who hack on the compilers and the virtual machines are too absorbed with implementing the language first. Yes, portability is great, but you can't just hope that it will drop out somewhere - you really have to put effort into it.

Got my first computer in late '98 (I was 19). Wanted to learn programming by myself some time later in '99. There was this big hype about Java's total world domination and VB was/is so widespread, so tried them first without much luck. I was bored using/learning them actually. Then some time in 2000 I've discovered the now dead UBB forum software. UBB had these so called "hacks". We call them "plugins" nowadays. I did not know a thing about programming but was modifying these hacks and even developing some by the copy-paste technique :) At some point I've decided that I can't go further without actually learning the language itself and bought a *very bad* book (which eventually went to trash). Then discovered the O'Reilly books in the university library and I really started learning Perl. It was hard at the beginning and the UBB experience did not help much since it's code was a real cr@p and I did not have much friends interested in Perl and the available ones are not interested in it deeply. But anyway, I really enjoyed using Perl tried more and more to master it and still trying to improve my skills and of course enjoying writing Perl :)

One day I noticed I could understand really huge data structures, thanks to Data::Dumper. Then I noticed all those funny things from CS (linked lists, fifo queues, push down stacks, hash tables, etc) were all built right into 8 or 40 bytes of code... -Paul

FWIW , From my POV, my first encounter with _the_ language (of anybodys' choice:-) was 25 years ago on VAX/VMS and prototype Ferranti PC (Ferranti Advance - remember them?) hardware - after which I didn't have an awful lot of exposure (it was predominantly Assembler, C & shell/make script) ... Until about '98 when I joined Sun - using it [perl] (in conjunction with shell & make script) to write a bespoke change management system integrating the in-house version control & build systems. Since when I've been using it [perl] (c/w the aforementioned shell & make script) to extend &/or customise all manner of configuration management (and configuration management related) tools and processes. Apart, that is, from 2 engagements: one (split over 2 year long assignments) that utilised it to provide the hub (pun intended) of a military standard messaging system and ... the current engagement - which is using it to provide hardware test suites/harnesses - an engagement where for some bizarre reason, I appear to have, by far, the most experience of the language within the test team ... providing endless opportunities, none of which are shunned, to evangelise And that, ladies and gentlemen of the jury, concludes the evidence for the defence :-D A user level that continues to overstate my experience :-))

I find it mildly amusing that the thing which brought me to Perl was the thing which most people seem to find most repulsive about it: Regular expressions. It was 1999. While the rest of the world fretted over y2k, I was working with a manufacturing software company (not exactly ERP, but close enough) and writing Delphi 2 code. I loved the language but hated the IDE's editor. I had been flirting with various unix-like OSes on and off for a bit over a decade and was haunted by fond memories of vi . When it got to be too much for me, I managed to locate an editor plugin which offered a vi mode and convinced management to buy me a copy. Once I'd reprogrammed my fingers to remember that I wasn't in a modeless editor any more, I was pleased, but it still wasn't quite what I wanted. I had been away from *nix for too long and my vi -fu had grown weak. My next stop was to buy myself a copy of Learning the vi Editor, which reminded me of all the things I had forgotten and taught me many I had never known. It also showed me things that could be done with regular expressions, while also showing that they had power beyond my grasp... The cycle repeated itself again, as I picked up Mastering Regular Expressions and learned its topic while getting a glimpse of how Perl - previously unknown to me aside from the name - could transcend even the glory of the regex. This sent me to meet the Llama for an introduction to Perl and the Coriolis Perl Black Book to really get me going with the language. Now, several years later, I haven't yet encountered anything that Perl gives me a taste of without also providing in fullness, so I haven't felt the need to move on since getting here and I don't expect to do so any time soon.

Long before my epiphany with vim I'd been using Dreamweaver for HTML authoring and digging further into it's capabilities I came across its regular expression features within Find & Replace. There was a note in "Dreamweaver Bible" referring to "Mastering Regular Expressions" which I found in a local library and from there I realised Perl was the languaged to learn if you wanted access to the full power of regexes. I next read the first 2/3 of "Programming Perl" while also trying to learn Java. By day I wrestled with Java OO and by night I relaxed with Larry Wall's entertaining tome. I only had space in my life for one "real" programming language so Perl won.

In my first "real job" I was creating Access 2 applications in VB 4. (It had to run on Windows 3.1 Don't ask.) I learned very fast that I hated Windows. I was asked to teach myself Perl because it was useful for this WWW thing. I did. I then got the opportunity to escape a job I hated for a much better one doing nothing but Perl. At that job I was lucky enough to find a mentor who had programmed in a lot of languages, including Lisp. The rest is history.

We were switching from IBM mainframes to Unix (we'd just gotten in a Cray X-MP running Unicos) and UniTree running on a Convex; one of the Convex FE's told me that I could learn shell, awk, sed, and C programming ... or just learn Perl. I went with Perl.

After getting my first job in IT, doing boring things with AutoCAD and MS Access VBA, I wanted to get into "real" programming. Java was the big hype then, so I went out and bought "Thinking in Java", 1st edition, by Bruce Eckel. Man, that was boring. A friend told me he was learning Perl, so I looked for a decent tutorial and found: Robert's Perl Tutorial This contains gems like "On the Superhighway to the Portability Panacea, Perl's Porsche powers past Java's jaded jalopy." Or "What is ActivePerl? Are the other Perls inactive?" My personal favourite: "How to Avoid Making Mountains while Escaping Special Characters." This took a while... but after staring at this line for some time: /http:\/\/language\.perl\.com\/faq\//; I finally slapped my forehead...

As a sysadmin I got to a point where for the various "duct tape" activities, shell scripting became cumbersome, so I learned Perl. Flirted a bit with Python, but Perl wins maleability points for allowing me to write "oneliners" (quotes are there because when experienting I tend to have "oneliners" that wrap a couple of times on a wide monitor).

I was working for a company which had contracted me out to a much larger one on a "just in case" basis for a couple of months - my managers were getting money in so long as I wasn't working on any other project. That left me with a lot of time on my hands, and Perl happened to be the first shiny thing that caught my eye as something new to learn. :-) My next job involved a lot of CGI/Perl programming. Co-incidence? Well, partially at least... --

use JAPH;

print JAPH::asString();

In the mid-90's working at a start-up we got into a quiet time, at that point I was getting into doing web pages and had gotten past the joys of writing HTML in Notepad. I wanted more, and started looking at CGI stuff, so I started learning Perl to understand how I could get CGI to work correctly. After awhile I started using it for help in testing, connecting to databases, scrubbing data, system calls and other things. Whenever I have a lot of data to munge I use Perl to do it, but I have since moved off into Python and Ruby for some other tasks but there is still a lot of Perl that I handle day to day.

I was working a manual labor job right out of high school to convince myself that I needed to go to college for some reason, and since I "knew about compooters", I weaseled my way into the technical documents library. I convinced my boss to let me digitize everything and write a search engine. He let me expense Teach Yourself Perl In 21 Days, and I spent the next week writing the first web application (and first bit of custom app development period) that this company had ever undertaken. 10 years later, our flagship CMS is written in perl, the old search engine is still running, and dot net is looming over me. Still, we had a good run.