On Tue, Mar 19, 2002 at 11:16:40PM -0500, Uri Guttman wrote:
>
> this current thread on fwp on perl saving someone's job is interesting
> and i think more on the lines of advocacy and even discussing perl
> jobs. so i cc'ed to those lists to get more of those 'perl saved my A**'
> stories. we have success stories on jobs.perl.org and others on
> perl.com. and advocacy has some stories i think. but a collection of
> these stories would be great to have.
HOW PERL SAVED MY A**
Background:
I used to be development/1st-/2nd-/3rd-line tech. support for a software
house selling back-office systems to lawyers.
Lawyers accounts remain open for the life of a case -- you can't
transfer balances at the end of a period like (some) normal accounts.
Therefore you have to transfer data from any existing system -- even if
it's a 20 year-old mini from a defunct manufacturer, with no support,
no documentation, no system software and no file/record layouts.
We would get the user to print all the reports on the system ... and
capture the output to disk. I used grep+sed+awk to process these text
files into the form our application needed.
The story:
Close of business one Friday afternoon: I visited a firm of lawyers
and collected their live data. I took the data home and started
the conversion on the machine that I would be installing -- with the
converted data -- on Monday morning. (I had already collected test
data and written and tested the scripts with a sub-set of the data).
The conversion should take until Saturday night, then I would spend
Sunday verifying and cross-checking the results.
Saturday morning: come down to find the machine only 10% through the
processing and the disk chattering away. I eventually managed to log
in and found that the awk conversion process was using all RAM + 50%
swap ... and growing at 4kB every few records ...
A quick calculation showed that (a) it would run out of swap before
completion and (b) it was not going to be finished in time for a Monday
morning installation.
ARRRRRGH!
I was committed to a Monday install. One thing you learn working for
lawyers -- you do not upset lawyers: it tends to be expensive.
Aside:
I had been playing round with this new language that has been released
(in several dozen messages posted to comp.lang.misc (or something)):
Perl -- already at version 3. I had managed to get it compiled on the
Altos Unix systems we were using then, but hadn't done much with it
-- the challenge had been getting it running on Altos Unix :-), but I'd
noticed that (a) it was supposed to be at least 10x faster than awk and
(b) it had a awk-to-perl translator. I happened to have a tape with
Perl compiled for Altos Unix with me.
Back to the plot:
* I cut several thousand lines of awk code out of the shell scripts they
were embedded in and saved them in separate files.
* I installed perl from the tape.
* I ran a2p on the files -- and saved the results. I noticed a few
warnings telling me to check whether the correct character or numeric
test had been chosen: it had.
* a2p also pointed out a mis-placed comment -- that turned out to
be causing the memory leak -- but didn't generate an error or warning
from awk.
Even though removing the comment had (apparently) solved to problem,
I was running late, so having created the Perl scripts I decided to use
them: the processing took under 1 hour.
** The processing took under 1 hour. **
The expected processing time in awk was ~18 hours: In spite of the
problems with awk, because of Perl I was now ahead of schedule.
The system was installed on the Monday morning.
This story still brings tears of relief/joy to my eyes.
I have used Perl ever since.
--
Chris Benson