… code. (MacOS support was removed from MakeMaker in 6.22, and merged to blead on 15th December 2004 with 5dca256. After this point MacOS wouldn't even have been able to build the perl binary, because it would not have been able to build DynaLoader. If anyone wishes to resurrect MacOS, start by reversing this commit and the relevant part of that commit.)
…hs under Cygwin Message-ID: <20041103012429.GA7196@efn.org> p4raw-id: //depot/perl@23468
(Lots of Perl 5 source code archaeology was involved.) Larry didn't make strangled noises when I showed him the patch, either :-) p4raw-id: //depot/perl@19242
C<require '\foo\bar.pm'> fails on windows if not running from the root directory; for a test case, see: http://bugs.activestate.com/show_bug.cgi?id=19317 this was due to not recognizing \foo\bar.pm as an absolute path name p4raw-link: @18320 on //depot/maint-5.6/perl: b900fc1f8c2531fe3108ef7a9cc5b4590a5dc7f6 p4raw-id: //depot/perl@18321 p4raw-integrated: from //depot/maint-5.6/perl@18319 'merge in' util.h (@9288..)
years (from Gisle Aas) p4raw-id: //depot/perl@5009
in COP; revert parts of change#4485 and s/xcv_filegv/xcv_file/ (CvFILE() may yet come in handy somewhere); adjust compiler doodads to suit p4raw-link: @4485 on //depot/perl: b195d48 p4raw-id: //depot/perl@4545
CORE LANGUAGE CHANGES Subject: Strictly follow lexical context of C<eval ''> and nested subs From: Chip Salzenberg <firstname.lastname@example.org> Files: op.c Subject: Make ::SUPER and UNIVERSAL work together From: Chip Salzenberg <email@example.com> Files: gv.c pod/perlguts.pod CORE PORTABILITY Subject: OS/2 patches Date: Wed, 5 Mar 1997 22:08:43 -0500 (EST) From: Ilya Zakharevich <firstname.lastname@example.org> Files: hints/os2.sh lib/ExtUtils/MakeMaker.pm t/op/taint.t Msg-ID: 199703060308.WAA22211@monk.mps.ohio-state.edu (applied based on p5p patch as commit eda4d51) Subject: VMS patches Date: Wed, 05 Mar 1997 23:10:24 -0500 (EST) From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU> Files: lib/ExtUtils/MM_VMS.pm lib/ExtUtils/Manifest.pm perlsdio.h t/op/runlevel.t t/op/taint.t vms/descrip.mms vms/perly_c.vms vms/sockadapt.c vms/sockadapt.h vms/vms_yfix.pl private-msgid: 01IG5SQE4A6U00661G@hmivax.humgen.upenn.edu DOCUMENTATION Subject: Add taint checks and srand to perldelta Date: Sun, 2 Mar 1997 11:56:08 -0800 (PST) From: Tom Phoenix <email@example.com> Files: pod/perldelta.pod Msg-ID: Pine.GSO.3.95q.970302115355.23058Dfirstname.lastname@example.org (applied based on p5p patch as commit b28e0bc) Subject: Don't call FileHandle 'deprecated' From: Chip Salzenberg <email@example.com> Files: pod/perldelta.pod Subject: Improve sample module header Date: Sat, 01 Mar 1997 10:32:31 -0700 From: Tom Christiansen <firstname.lastname@example.org> Files: pod/perlmod.pod Msg-ID: 199703011732.KAA14693@jhereg.perl.com (applied based on p5p patch as commit 3e1e156) Subject: Update list of CPAN sites Date: Sun, 2 Mar 1997 16:54:22 +0200 (EET) From: Jarkko Hietaniemi <email@example.com> Files: pod/perlmod.pod Msg-ID: 199703021454.QAA07446@alpha.hut.fi (applied based on p5p patch as commit 9423903) Subject: Enhance description of 'server error' Date: Tue, 4 Feb 1997 21:03:23 +0200 (EET) From: Jarkko Hietaniemi <firstname.lastname@example.org> Files: pod/perldiag.pod private-msgid: 199702041903.VAA16070@alpha.hut.fi Subject: Regularize format of E-Mail addresses in *.pod From: Chip Salzenberg <email@example.com> Files: pod/*.pod LIBRARY AND EXTENSIONS Subject: Use IV instead of double for tms structure members From: Chip Salzenberg <firstname.lastname@example.org> Files: ext/POSIX/POSIX.xs OTHER CORE CHANGES Subject: Make sure $^X is tainted when ARG_ZERO_IS_SCRIPT From: Chip Salzenberg <email@example.com> Files: toke.c Subject: Clarify '-T too late' error From: Chip Salzenberg <firstname.lastname@example.org> Files: perl.c pod/perldiag.pod Subject: Warn when redefining or undefining a constant sub From: Chip Salzenberg <email@example.com> Files: pod/perldiag.pod pp.c sv.c Subject: Don't generate spurious 'not imported' warning From: Chip Salzenberg <firstname.lastname@example.org> Files: gv.c t/pragma/strict-vars pod/perldiag.pod Subject: Clarify message re: @host in string From: Chip Salzenberg <email@example.com> Files: pod/perldiag.pod pod/perltrap.pod toke.c Subject: Disconnect refs that are targets of pp_readline From: Chip Salzenberg <firstname.lastname@example.org> Files: pp_hot.c Subject: Fix typo in test of HvFILL() From: Chip Salzenberg <email@example.com> Files: op.c Subject: Allow for pad name array to be shorter than pad array From: Chip Salzenberg <firstname.lastname@example.org> Files: op.c Subject: Eliminate format-string type warnings Date: Mon, 3 Mar 1997 10:15:11 +0100 (MET) From: Hallvard B Furuseth <email@example.com> Files: doio.c ext/POSIX/POSIX.xs gv.c hints/dec_osf.sh pp.c pp_ctl.c pp_hot.c run.c sv.c x2p/a2py.c private-msgid: 199703030915.KAA11634@bombur2.uio.no Subject: Update copyright dates From: Chip Salzenberg <firstname.lastname@example.org> Files: *.[hc] x2p/*.[hc] win32/EXTERN.h vms/vmsish.h vms/vms.c TESTS Subject: Smarter t/op/taint.t Date: Mon, 3 Mar 1997 10:31:54 -0800 (PST) From: Tom Phoenix <email@example.com> Files: t/op/taint.t private-msgid: Pine.GSO.3.95q.970303103047.24000Afirstname.lastname@example.org Subject: Fix taint test for systems without csh From: Chip Salzenberg <email@example.com> Files: t/op/taint.t
[editor's note: this commit combines approximate 4 months of furious releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for details. Andy notes that; Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge backup tapes from that era seem to be readable anymore. I guess 13 years exceeds the shelf life for that backup technology :-(. ]
Configure had difficulties if the user's path had weird components. Now Configure appends the user's path to its own. Some machines need <netinet/in.h> included in order to define certain macros for packing or unpacking network order data. On Suns, the shared library is used by default. If it doesn't contain something contained in /lib/libc.a, then Configure was getting things wrong (such as gethostent()). Now Configure uses the shared library if it's there in preference to libc.a. When gcc was selected as the compiler, the cc flags defaulted to -fpcc_struct_return. Unfortunately, the underlines should be hyphens. Configure figures out if BSD shadow passwords are installed and the getpw* routines now return slightly different data in the affected fields. Some of the prompts in Configure with regard to gid and uid types were unclear as to their intended use. They are now a little clearer. Sometimes you could change a .h file and taintperl and suidperl didn't get remade correctly because of missing dependencies in the Makefile. The README file was misleading about the fact that you have to say "make test" before you can "cd t; TEST" The reverse operator was busted in two different ways. Should work better now. There are now regression tests for it. Some of the optimizations that perl does are disabled after period of time if perl decides they aren't doing any good. One of these caused a string to be freed that was later referenced via another pointer, causing core dumps. The free turned out to be unnecessary, so it was removed. The unless modifier was broken when run under the debugger, due to the invert() routine in perl.y inverting the logic on the DB subroutine call instead of the command the unless was modifying. Configure vfork test was backwards. It now works like other defines. The numeric switch optimization was broken, and caused code to be bypassed. This has been fixed. A split in a subroutine that has no target splits into @_. Unfortunately, this wrongly freed any referenced arguments passed in through @_, causing confusing behavior later in the program. File globbing (<foo.*>) left one orphaned string each time it called the shell to do the glob. RCS expanded an unintended $Header in lib/perldb.pl. This has been fixed simply by replacing the $ with a . Some forward declarations of static functions were missing from malloc.c. There's a strut in malloc for mips machines to extend the overhead union to the size of a double. This was also enabled for sparc machines. DEC risc machines are reported to have a buggy memcmp. I've put some conditional code into perl.h which I think will undef MEMCMP appropriately. In perl.man.4, I documented the desirability of using parens even where they aren't strictly necessary. I've grandfathered "format stdout" to be the same as "format STDOUT". Unary operators can be called with no argument. The corresponding function call form using empty parens () didn't work right, though it did for certain functions in 2.0. It now works in 3.0. The string ordering tests were wrong for pairs of strings in which one string was a prefix of the other. This affected lt, le, gt, ge, and the sort operator when used with no subroutine. $/ didn't work with the stupid code used when STDSTDIO was undefined. The stupid code has been replaced with smarter code that can do it right. Special thanks to Piet van Oostrum for the code. Goulds work better if the union in STR is at an 8 byte boundary. The fields were rearranged somewhat to provide this. "sort keys %a" should now work right (though parens are still desirable for readability). bcopy() needed a forward declaration on some machines. In x2p/Makefile.SH, added dependency on ../config.sh so that it gets linked down from above if it got removed for some reason.
A few of the new features: (18 Oct) * Perl can now handle binary data correctly and has functions to pack and unpack binary structures into arrays or lists. You can now do arbitrary ioctl functions. * You can now pass things to subroutines by reference. * Debugger enhancements. * An array or associative array may now appear in a local() list. * Array values may now be interpolated into strings. * Subroutine names are now distinguished by prefixing with &. You can call subroutines without using do, and without passing any argument list at all. * You can use the new -u switch to cause perl to dump core so that you can run undump and produce a binary executable image. Alternately you can use the "dump" operator after initializing any variables and such. * You can now chop lists. * Perl now uses /bin/csh to do filename globbing, if available. This means that filenames with spaces or other strangenesses work right. * New functions: mkdir and rmdir, getppid, getpgrp and setpgrp, getpriority and setpriority, chroot, ioctl and fcntl, flock, readlink, lstat, rindex, pack and unpack, read, warn, dbmopen and dbmclose, dump, reverse, defined, undef.
Some of the enhancements from Perl1 included: * New regexp routines derived from Henry Spencer's. o Support for /(foo|bar)/. o Support for /(foo)*/ and /(foo)+/. o \s for whitespace, \S for non-, \d for digit, \D nondigit * Local variables in blocks, subroutines and evals. * Recursive subroutine calls are now supported. * Array values may now be interpolated into lists: unlink 'foo', 'bar', @trashcan, 'tmp'; * File globbing. * Use of <> in array contexts returns the whole file or glob list. * New iterator for normal arrays, foreach, that allows both read and write. * Ability to open pipe to a forked off script for secure pipes in setuid scripts. * File inclusion via do 'foo.pl'; * More file tests, including -t to see if, for instance, stdin is a terminal. File tests now behave in a more correct manner. You can do file tests on filehandles as well as filenames. The special filetests -T and -B test a file to see if it's text or binary. * An eof can now be used on each file of the <> input for such purposes as resetting the line numbers or appending to each file of an inplace edit. * Assignments can now function as lvalues, so you can say things like ($HOST = $host) =~ tr/a-z/A-Z/; ($obj = $src) =~ s/\.c$/.o/; * You can now do certain file operations with a variable which holds the name of a filehandle, e.g. open(++$incl,$includefilename); $foo = <$incl>; * Warnings are now available (with -w) on use of uninitialized variables and on identifiers that are mentioned only once, and on reference to various undefined things. * There is now a wait operator. * There is now a sort operator. * The manual is now not lying when it says that perl is generally faster than sed. I hope.
[ 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.