Commits on Jun 28, 1988
  1. @TimToady

    perl 2.0 patch 1: removed redundant debugging code in regexp.c

    If you used ++ on a variable that had the value '' (as opposed to
    being undefined) it would increment the numeric part but not
    invalidate the string part, which could then give false results.
    Berkeley recently sent out a patch that disables setuid #! scripts
    because of an inherent problem in the semantics as they are
    currently defined.  If you have installed that patch, your setuid
    and setgid bits are useless on scripts.  I've added a means
    for perl to examine those bits and emulate setuid/setgid scripts
    itself in what I believe is a secure manner.  If normal perl
    detects such a script, it passes it off to another version of
    perl that runs setuid root, and can run the script under the
    desired uid/gid.  This feature is optional, and Configure will
    ask if you want to do it.
    Some machines didn't like config.h when it said #/*undef SYMBOL.
    Config.h.SH now is smart enough to tuck the # inside the comment.
    There were several small problems in Configure: the return code from
    ar was hidden by a piped call to sed, so if ar failed it went
    undetected.  The Cray uses a program called bld instead of ar.
    Let's hear it for compatibilty.  At least one version of gnucpp
    adds a space after symbol interpolation, which was giving the
    C preprocessor detector fits.  There was a call to grep '-i' that
    needed to have the -i protected by a backslash.  Also, Configure
    should remove the UU subdirectory that it makes while running.
    "make realclean" now knows about the alternate patch extension ~.
    In the manual page, I fixed some quotes that were ugly in troff,
    and did some clarification of LIST, study, tr and unlink.
    regexp.c had some redundant debugging code.
    tr/x/y/ could dump core if y is shorter than x.  I found this out
    when I tried translating a bunch of characters to space by saying
    something like y/a-z/ /.
    TimToady committed Jun 28, 1988
Commits on Feb 1, 1988
  1. perl 1.0 patch 14: a2p incorrectly translates 'for (a in b)' construct.

    The code a2p creates for the 'for (a in b)' construct ends
    up assigning the wrong value to the key variable.
    Jeff Siegal committed with Larry Wall Feb 1, 1988
  2. perl 1.0 patch 13: fix for faulty patch 12, plus random portability g…

    I botched patch #12, so that split(' ') only works on the first
    line of input due to unintended interference by the optimization
    that was added at the same time.  Yes, I tested it, but only on
    one line of input.  *Sigh*
    Some glitches have turned up on some of the rusty pig iron out there,
    so here are some unglitchifications.
    Kriton Kyrimis committed with Larry Wall Feb 1, 1988
  3. perl 1.0 patch 12: scripts made by a2p doen't handle leading white sp…

    …ace right on input
    Awk ignores leading whitespace on split.  Perl by default does not.
    The a2p translator couldn't handle this.  The fix is partly to a2p
    and partly to perl.  Perl now has a way to specify to split to
    ignore leading white space as awk does.  A2p now takes advantage of
    I also threw in an optimization that let's runtime patterns
    compile just once if they are known to be constant, so that
    split(' ') doesn't compile the pattern every time.
    Kriton Kyrimis committed with Larry Wall Feb 1, 1988
Commits on Jan 31, 1988
  1. perl 1.0 patch 11: documentation upgrade

    I documented the new eval operator for patch 8 but my automatic
    patch generator overlooked it for some reason.
    Here's the documentation for the eval operator, along with some
    other documentation changes suggested by Mark.
    Mark Biggar committed with Larry Wall Jan 31, 1988
Commits on Jan 29, 1988
  1. perl 1.0 patch 10: if your libc is in a strange place, Configure blow…

    …s up
    There's a line in Configure that says libc=ans which should say
    libc=$ans.  This only shows up if libc.a isn't in /lib.
    Peter E. Yee committed with Larry Wall Jan 29, 1988
  2. perl 1.0 patch 9: 3 portability problems

    There's a #define YYDEBUG; in perl.h that ought to be
    #define YYDEBUG 1.  Interesting that it works the former way on
    any systems at all.
    Patch 2 was defective and introduced a couple of lines with missing
    right parens.  Learn something old every day...
    Some awks can't handle
    awk '$6 != "" {print substr($6,2,100)}' </tmp/Cppsym2$$ ;;
    if field 6 doesn't exist.  Changed conditional to NF > 5.
    There was also a problem that I fixed in metaconfig that involved
    Configure grepping .SH files out of MANIFEST when the .SH was only
    in the commentary.  This doesn't affect perl's Configure because
    there aren't any comments containing .SH in the MANIFEST file.
    But that's the nice thing about metaconfig--you generate a new
    Configure script and also get the changes you don't need (yet).
    Marnix (ain't unix!) A. van Ammers committed with Larry Wall Jan 29, 1988
Commits on Jan 27, 1988
  1. perl 1.0 patch 8: perl needed an eval operator and a symbolic debugger

    I didn't add an eval operator to the original perl because
    I hadn't thought of any good uses for it.  Recently I thought
    of some.  Along with creating the eval operator, this patch
    introduces a symbolic debugger for perl scripts, which makes
    use of eval to interpret some debugging commands.  Having eval
    also lets me emulate awk's FOO=bar command line behavior with
    a line such as the one a2p now inserts at the beginning of
    translated scripts.
    Larry Wall committed Jan 27, 1988
Commits on Jan 26, 1988
  1. perl 1.0 patch 7: use of included malloc.c should be optional

    The version of malloc.c that comes with perl was not really intended
    to be used everywhere--it was included mostly for debugging purposes.
    It's a nice little package, however, so I'm making it optional (via
    Configure) as to whether you want it or not.
    Arnold D. Robbins committed with Larry Wall Jan 26, 1988
Commits on Jan 25, 1988
  1. perl 1.0 patch 6: printf doesn't finish processing format string when…

    … out of args.
    printf "%% %d %%", 1;  produces "% 1 %%", which is counterintuitive.
    Andrew Burt committed with Larry Wall Jan 25, 1988
  2. perl 1.0 patch 5: a2p didn't make use of the config.h generated by Co…

    The a2p program used index() and bcopy(), both of do not exist
    everywhere.  Since Configure was already figuring out about those
    functions, it is fairly trivial to get a2p to make use of the info.
    Arnold D. Robbins committed with Larry Wall Jan 25, 1988
  3. perl 1.0 patch 4: make depend doesn't work if . isn't in your PATH

    make depend doesn't work if . isn't in your PATH.
    Paul Eggert committed with Larry Wall Jan 25, 1988
Commits on Jan 23, 1988
  1. perl 1.0 patch 3: Patch 2 was incomplete

    I left one file out of patch 2.  This is perhaps forgivable since
    it is a file that is produced automatically by metaconfig along
    with Configure.
    Larry Wall committed Jan 23, 1988
  2. perl 1.0 patch 2: Various portability fixes.

    Some things didn't work right on System V and Pyramids.
    Andrew Burt committed with Larry Wall Jan 23, 1988
Commits on Jan 21, 1988
  1. perl 1.0 patch 1: Portability bugs and one possible SIGSEGV

    On some systems the Configure script and C compilations get
    warning messages that may scare some folks unnecessarily.
    Also, use of the "redo" command if debugging is compiled in
    overflows a stack on which the trace context is kept.
    Dan Faigin, Doug Landauer committed with Larry Wall Jan 21, 1988
Commits on Dec 18, 1987
  1. a "replacement" for awk and sed

    [  Perl is kind of designed to make awk and sed semi-obsolete.  This posting
       will include the first 10 patches after the main source.  The following
       description is lifted from Larry's manpage. --r$  ]
       Perl is a interpreted language optimized for scanning arbitrary text
       files, extracting information from those text files, and printing
       reports based on that information.  It's also a good language for many
       system management tasks.  The language is intended to be practical
       (easy to use, efficient, complete) rather than beautiful (tiny,
       elegant, minimal).  It combines (in the author's opinion, anyway) some
       of the best features of C, sed, awk, and sh, so people familiar with
       those languages should have little difficulty with it.  (Language
       historians will also note some vestiges of csh, Pascal, and even
       BASIC-PLUS.) Expression syntax corresponds quite closely to C
       expression syntax.  If you have a problem that would ordinarily use sed
       or awk or sh, but it exceeds their capabilities or must run a little
       faster, and you don't want to write the silly thing in C, then perl may
       be for you.  There are also translators to turn your sed and awk
       scripts into perl scripts.
    Larry Wall committed Dec 18, 1987