OS/2 update
[p5sagit/p5-mst-13.2.git] / README.win32
CommitLineData
68dc0745 1If you read this file _as_is_, just ignore the funny characters you
2see. It is written in the POD format (see pod/perlpod.pod) which is
3specially designed to be readable as is.
4
5=head1 NAME
6
5aabfad6 7perlwin32 - Perl under Win32
68dc0745 8
9=head1 SYNOPSIS
10
7bac28a0 11These are instructions for building Perl under Windows NT (versions
9036c72f 123.51 or 4.0). Currently, this port is reported to build
26618a56 13under Windows95 using the 4DOS shell--the default shell that infests
14Windows95 will not work (see below). Note this caveat is only about
3e3baf6d 15B<building> perl. Once built, you should be able to B<use> it on
16either Win32 platform (modulo the problems arising from the inferior
17command shell).
68dc0745 18
19=head1 DESCRIPTION
20
3fe9a6f1 21Before you start, you should glance through the README file
68dc0745 22found in the top-level directory where the Perl distribution
23was extracted. Make sure you read and understand the terms under
24which this software is being distributed.
25
f7c603cb 26Also make sure you read L<BUGS AND CAVEATS> below for the
68dc0745 27known limitations of this port.
28
29The INSTALL file in the perl top-level has much information that is
30only relevant to people building Perl on Unix-like systems. In
31particular, you can safely ignore any information that talks about
32"Configure".
33
7bac28a0 34You may also want to look at two other options for building
35a perl that will work on Windows NT: the README.cygwin32 and
3e3baf6d 36README.os2 files, which each give a different set of rules to build
37a Perl that will work on Win32 platforms. Those two methods will
7bac28a0 38probably enable you to build a more Unix-compatible perl, but you
39will also need to download and use various other build-time and
40run-time support software described in those files.
68dc0745 41
42This set of instructions is meant to describe a so-called "native"
43port of Perl to Win32 platforms. The resulting Perl requires no
44additional software to run (other than what came with your operating
9036c72f 45system). Currently, this port is capable of using one of the
46following compilers:
47
48 Borland C++ version 5.02 or later
49 Microsoft Visual C++ version 4.2 or later
50 Mingw32 with EGCS version 1.0.2
51 Mingw32 with GCC version 2.8.1
52
a29d2910 53The last two of these are high quality freeware compilers. Support
54for them is still experimental.
5aabfad6 55
56This port currently supports MakeMaker (the set of modules that
57is used to build extensions to perl). Therefore, you should be
58able to build and install most extensions found in the CPAN sites.
c90c0ff4 59See L<Usage Hints> below for general hints about this.
68dc0745 60
61=head2 Setting Up
62
63=over 4
64
3e3baf6d 65=item Command Shell
68dc0745 66
26618a56 67Use the default "cmd" shell that comes with NT. Some versions of the
68popular 4DOS/NT shell have incompatibilities that may cause you trouble.
69If the build fails under that shell, try building again with the cmd
70shell. The Makefile also has known incompatibilites with the "command.com"
71shell that comes with Windows95, so building under Windows95 should
72be considered "unsupported". However, there have been reports of successful
73build attempts using 4DOS/NT version 3.00 under Windows95, using dmake, but
74your mileage may vary.
75
76The surest way to build it is on WindowsNT, using the cmd shell.
68dc0745 77
3e3baf6d 78=item Borland C++
79
80If you are using the Borland compiler, you will need dmake, a freely
81available make that has very nice macro features and parallelability.
82(The make that Borland supplies is seriously crippled, and will not
26618a56 83work for MakeMaker builds.)
84
85A port of dmake for win32 platforms is available from:
3e3baf6d 86
26618a56 87 http://www-personal.umich.edu/~gsar/dmake-4.1-win32.zip
88
89Fetch and install dmake somewhere on your path (follow the instructions
90in the README.NOW file).
3e3baf6d 91
92=item Microsoft Visual C++
68dc0745 93
3e3baf6d 94The NMAKE that comes with Visual C++ will suffice for building.
9036c72f 95You will need to run the VCVARS32.BAT file usually found somewhere
96like C:\MSDEV4.2\BIN. This will set your build environment.
68dc0745 97
26618a56 98You can also use dmake to build using Visual C++, provided:
99you set OSRELEASE to "microsft" (or whatever the directory name
100under which the Visual C dmake configuration lives) in your environment,
101and edit win32/config.vc to change "make=nmake" into "make=dmake". The
102latter step is only essential if you want to use dmake as your default
103make for building extensions using MakeMaker.
3e3baf6d 104
9036c72f 105=item Mingw32 with EGCS or GCC
106
107ECGS-1.0.2 binaries can be downloaded from:
108
109 ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/
68dc0745 110
9036c72f 111GCC-2.8.1 binaries are available from:
68dc0745 112
9036c72f 113 http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/
68dc0745 114
9036c72f 115You only need either one of those, not both. Both bundles come with
116Mingw32 libraries and headers. While both of them work to build perl,
117the EGCS binaries are currently favored by the maintainers, since they
118come with more up-to-date Mingw32 libraries.
119
120Make sure you install the binaries as indicated in the web sites
121above. You will need to set up a few environment variables (usually
122run from a batch file).
68dc0745 123
124=back
125
137443ea 126=head2 Building
68dc0745 127
128=over 4
129
130=item *
131
68dc0745 132Make sure you are in the "win32" subdirectory under the perl toplevel.
137443ea 133This directory contains a "Makefile" that will work with
9036c72f 134versions of NMAKE that come with Visual C++, and a dmake "makefile.mk"
135that will work for all supported compilers. The defaults in the dmake
136makefile are setup to build using the Borland compiler.
68dc0745 137
138=item *
139
9036c72f 140Edit the makefile.mk (or Makefile, if using nmake) and change the values
141of INST_DRV and INST_TOP. You can also enable various build
26618a56 142flags.
143
9036c72f 144Beginning with version 5.005, there is experimental support for building
145a perl interpreter that supports the Perl Object abstraction (courtesy
146ActiveState Tool Corp.) PERL_OBJECT uses C++, and the binaries are
147therefore incompatible with the regular C build. However, the
148PERL_OBJECT build does provide something called the C-API, for linking
a29d2910 149it with extensions that won't compile under PERL_OBJECT. PERL_OBJECT
150cannot be enabled when using GCC or EGCS, yet.
9036c72f 151
152Beginning with version 5.005, there is experimental support for building
153a perl interpreter that is capable of native threading. Binaries built
154with thread support enabled are also incompatible with the vanilla C
155build.
156
157At the present time, you cannot enable both threading and PERL_OBJECT.
158You can get only one of them in a Perl interpreter.
159
26618a56 160If you have either the source or a library that contains des_fcrypt(),
161enable the appropriate option in the makefile. des_fcrypt() is not
162bundled with the distribution due to US Government restrictions
163on the export of cryptographic software. Nevertheless, this routine
164is part of the "libdes" library (written by Ed Young) which is widely
165available worldwide, usually along with SSLeay (for example:
166"ftp://fractal.mta.ca/pub/crypto/SSLeay/DES/"). Set CRYPT_SRC to the
167name of the file that implements des_fcrypt(). Alternatively, if
168you have built a library that contains des_fcrypt(), you can set
169CRYPT_LIB to point to the library name.
170
171Perl will also build without des_fcrypt(), but the crypt() builtin will
172fail at run time.
c90c0ff4 173
3e3baf6d 174You will also have to make sure CCHOME points to wherever you installed
175your compiler.
c90c0ff4 176
9036c72f 177Other options are explained in the makefiles. Be sure to read the
178instructions carefully.
179
68dc0745 180=item *
181
9036c72f 182Type "dmake" (or "nmake" if you are using that make).
68dc0745 183
137443ea 184This should build everything. Specifically, it will create perl.exe,
9036c72f 185perl.dll (or perlcore.dll), and perlglob.exe at the perl toplevel, and
186various other extension dll's under the lib\auto directory. If the build
187fails for any reason, make sure you have done the previous steps correctly.
68dc0745 188
156a3eb7 189The build process may produce "harmless" compiler warnings (more or
190less copiously, depending on how picky your compiler gets). The
191maintainers are aware of these warnings, thankyouverymuch. :)
192
3e3baf6d 193When building using Visual C++, a perl95.exe will also get built. This
194executable is only needed on Windows95, and should be used instead of
195perl.exe, and then only if you want sockets to work properly on Windows95.
196This is necessitated by a bug in the Microsoft C Runtime that cannot be
26618a56 197worked around in the "normal" perl.exe. perl95.exe gets built with its
198own private copy of the C Runtime that is not accessible to extensions
199(which see the DLL version of the CRT). Be aware, therefore, that this
200perl95.exe will have esoteric problems with extensions like perl/Tk that
201themselves use the C Runtime heavily, or want to free() pointers
202malloc()-ed by perl.
3e3baf6d 203
204You can avoid the perl95.exe problems completely if you use Borland
205C++ for building perl (perl95.exe is not needed and will not be built
206in that case).
207
68dc0745 208=back
209
210=head2 Testing
211
9036c72f 212Type "dmake test" (or "nmake test"). This will run most of the tests from
3e3baf6d 213the testsuite (many tests will be skipped, and but no test should fail).
68dc0745 214
8b88ae92 215If some tests do fail, it may be because you are using a different command
137443ea 216shell than the native "cmd.exe".
68dc0745 217
3e3baf6d 218If you used the Borland compiler, you may see a failure in op/taint.t
219arising from the inability to find the Borland Runtime DLLs on the system
220default path. You will need to copy the DLLs reported by the messages
221from where Borland chose to install it, into the Windows system directory
222(usually somewhere like C:\WINNT\SYSTEM32), and rerun the test.
223
9036c72f 224The Visual C runtime apparently has a bug that causes posix.t to fail
225one it test#2. This usually happens only if you extracted the files in
226text mode.
227
3e3baf6d 228Please report any other failures as described under L<BUGS AND CAVEATS>.
68dc0745 229
137443ea 230=head2 Installation
231
9036c72f 232Type "dmake install" (or "nmake install"). This will put the newly
26618a56 233built perl and the libraries under whatever C<INST_TOP> points to in the
234Makefile. It will also install the pod documentation under
9036c72f 235C<$INST_TOP\$VERSION\lib\pod> and HTML versions of the same under
236C<$INST_TOP\$VERSION\lib\pod\html>. To use the Perl you just installed,
237you will need to add two components to your PATH environment variable,
238C<$INST_TOP\$VERSION\bin>, and C<$INST_TOP\$VERSION\bin\$ARCHNAME>.
239For example:
240
241 set PATH c:\perl\5.005\bin;c:\perl\5.005\bin\MSWin32-x6;%PATH%
242
137443ea 243
7bac28a0 244=head2 Usage Hints
245
246=over 4
247
248=item Environment Variables
249
250The installation paths that you set during the build get compiled
251into perl, so you don't have to do anything additional to start
252using that perl (except add its location to your PATH variable).
253
254If you put extensions in unusual places, you can set PERL5LIB
255to a list of paths separated by semicolons where you want perl
256to look for libraries. Look for descriptions of other environment
26618a56 257variables you can set in L<perlrun>.
258
259You can also control the shell that perl uses to run system() and
260backtick commands via PERL5SHELL. See L<perlrun>.
7bac28a0 261
9036c72f 262Currently, Perl does not depend on the registry, but can look up
263values if you choose to put them there. [XXX add registry locations
264that perl looks at here.]
7bac28a0 265
3e3baf6d 266=item File Globbing
267
268By default, perl spawns an external program to do file globbing.
269The install process installs both a perlglob.exe and a perlglob.bat
270that perl can use for this purpose. Note that with the default
271installation, perlglob.exe will be found by the system before
272perlglob.bat.
273
274perlglob.exe relies on the argv expansion done by the C Runtime of
275the particular compiler you used, and therefore behaves very
276differently depending on the Runtime used to build it. To preserve
dfb634a9 277compatiblity, perlglob.bat (a perl script that can be used portably)
278is installed. Besides being portable, perlglob.bat also offers
279enhanced globbing functionality.
3e3baf6d 280
281If you want perl to use perlglob.bat instead of perlglob.exe, just
282delete perlglob.exe from the install location (or move it somewhere
dfb634a9 283perl cannot find). Using File::DosGlob.pm (which implements the core
284functionality of perlglob.bat) to override the internal CORE::glob()
285works about 10 times faster than spawing perlglob.exe, and you should
286take this approach when writing new modules. See File::DosGlob for
287details.
3e3baf6d 288
7bac28a0 289=item Using perl from the command line
290
291If you are accustomed to using perl from various command-line
292shells found in UNIX environments, you will be less than pleased
293with what Windows NT offers by way of a command shell.
294
295The crucial thing to understand about the "cmd" shell (which is
296the default on Windows NT) is that it does not do any wildcard
297expansions of command-line arguments (so wildcards need not be
298quoted). It also provides only rudimentary quoting. The only
299(useful) quote character is the double quote ("). It can be used to
300protect spaces in arguments and other special characters. The
301Windows NT documentation has almost no description of how the
302quoting rules are implemented, but here are some general observations
303based on experiments: The shell breaks arguments at spaces and
304passes them to programs in argc/argv. Doublequotes can be used
305to prevent arguments with spaces in them from being split up.
306You can put a double quote in an argument by escaping it with
307a backslash and enclosing the whole argument within double quotes.
308The backslash and the pair of double quotes surrounding the
309argument will be stripped by the shell.
310
311The file redirection characters "<", ">", and "|" cannot be quoted
312by double quotes (there are probably more such). Single quotes
313will protect those three file redirection characters, but the
314single quotes don't get stripped by the shell (just to make this
315type of quoting completely useless). The caret "^" has also
316been observed to behave as a quoting character (and doesn't get
317stripped by the shell also).
318
319Here are some examples of usage of the "cmd" shell:
320
321This prints two doublequotes:
322
323 perl -e "print '\"\"' "
324
325This does the same:
326
327 perl -e "print \"\\\"\\\"\" "
328
329This prints "bar" and writes "foo" to the file "blurch":
330
331 perl -e "print 'foo'; print STDERR 'bar'" > blurch
332
333This prints "foo" ("bar" disappears into nowhereland):
334
335 perl -e "print 'foo'; print STDERR 'bar'" 2> nul
336
337This prints "bar" and writes "foo" into the file "blurch":
338
339 perl -e "print 'foo'; print STDERR 'bar'" 1> blurch
340
7bac28a0 341This pipes "foo" to the "less" pager and prints "bar" on the console:
342
343 perl -e "print 'foo'; print STDERR 'bar'" | less
344
345This pipes "foo\nbar\n" to the less pager:
346
7bac28a0 347 perl -le "print 'foo'; print STDERR 'bar'" 2>&1 | less
348
349This pipes "foo" to the pager and writes "bar" in the file "blurch":
350
351 perl -e "print 'foo'; print STDERR 'bar'" 2> blurch | less
352
353
84902520 354Discovering the usefulness of the "command.com" shell on Windows95
7bac28a0 355is left as an exercise to the reader :)
356
357=item Building Extensions
358
359The Comprehensive Perl Archive Network (CPAN) offers a wealth
360of extensions, some of which require a C compiler to build.
361Look in http://www.perl.com/ for more information on CPAN.
362
363Most extensions (whether they require a C compiler or not) can
364be built, tested and installed with the standard mantra:
365
366 perl Makefile.PL
3e3baf6d 367 $MAKE
368 $MAKE test
369 $MAKE install
7bac28a0 370
3e3baf6d 371where $MAKE stands for NMAKE or DMAKE. Some extensions may not
372provide a testsuite (so "$MAKE test" may not do anything, or fail),
373but most serious ones do.
7bac28a0 374
3e3baf6d 375If a module implements XSUBs, you will need one of the supported
376C compilers. You must make sure you have set up the environment for
377the compiler for command-line compilation.
7bac28a0 378
3e3baf6d 379If a module does not build for some reason, look carefully for
7bac28a0 380why it failed, and report problems to the module author. If
381it looks like the extension building support is at fault, report
382that with full details of how the build failed using the perlbug
383utility.
384
c90c0ff4 385=item Win32 Specific Extensions
386
387A number of extensions specific to the Win32 platform are available
388from CPAN. You may find that many of these extensions are meant to
389be used under the Activeware port of Perl, which used to be the only
390native port for the Win32 platform. Since the Activeware port does not
391have adequate support for Perl's extension building tools, these
392extensions typically do not support those tools either, and therefore
393cannot be built using the generic steps shown in the previous section.
394
395To ensure smooth transitioning of existing code that uses the
9036c72f 396ActiveState port, there is a bundle of Win32 extensions that contains
397all of the ActiveState extensions and most other Win32 extensions from
c90c0ff4 398CPAN in source form, along with many added bugfixes, and with MakeMaker
399support. This bundle is available at:
400
9036c72f 401 http://www.perl.com/CPAN/authors/id/GSAR/libwin32-0.12.zip
c90c0ff4 402
403See the README in that distribution for building and installation
404instructions. Look for later versions that may be available at the
405same location.
406
156a3eb7 407=item Running Perl Scripts
408
409Perl scripts on UNIX use the "#!" (a.k.a "shebang") line to
410indicate to the OS that it should execute the file using perl.
411Win32 has no comparable means to indicate arbitrary files are
412executables.
413
414Instead, all available methods to execute plain text files on
415Win32 rely on the file "extension". There are three methods
416to use this to execute perl scripts:
417
418=over 8
419
420=item 1
421
422There is a facility called "file extension associations" that will
423work in Windows NT 4.0. This can be manipulated via the two
424commands "assoc" and "ftype" that come standard with Windows NT
4254.0. Type "ftype /?" for a complete example of how to set this
426up for perl scripts (Say what? You thought Windows NT wasn't
427perl-ready? :).
428
429=item 2
430
431Since file associations don't work everywhere, and there are
432reportedly bugs with file associations where it does work, the
433old method of wrapping the perl script to make it look like a
434regular batch file to the OS, may be used. The install process
435makes available the "pl2bat.bat" script which can be used to wrap
436perl scripts into batch files. For example:
437
438 pl2bat foo.pl
439
440will create the file "FOO.BAT". Note "pl2bat" strips any
441.pl suffix and adds a .bat suffix to the generated file.
442
443If you use the 4DOS/NT or similar command shell, note that
444"pl2bat" uses the "%*" variable in the generated batch file to
445refer to all the command line arguments, so you may need to make
446sure that construct works in batch files. As of this writing,
4474DOS/NT users will need a "ParameterChar = *" statement in their
4484NT.INI file, or will need to execute "setdos /p*" in the 4DOS/NT
449startup file to enable this to work.
450
451=item 3
452
453Using "pl2bat" has a few problems: the file name gets changed,
454so scripts that rely on C<$0> to find what they must do may not
455run properly; running "pl2bat" replicates the contents of the
456original script, and so this process can be maintenance intensive
457if the originals get updated often. A different approach that
458avoids both problems is possible.
459
460A script called "runperl.bat" is available that can be copied
461to any filename (along with the .bat suffix). For example,
462if you call it "foo.bat", it will run the file "foo" when it is
463executed. Since you can run batch files on Win32 platforms simply
464by typing the name (without the extension), this effectively
465runs the file "foo", when you type either "foo" or "foo.bat".
466With this method, "foo.bat" can even be in a different location
467than the file "foo", as long as "foo" is available somewhere on
468the PATH. If your scripts are on a filesystem that allows symbolic
469links, you can even avoid copying "runperl.bat".
470
471Here's a diversion: copy "runperl.bat" to "runperl", and type
472"runperl". Explain the observed behavior, or lack thereof. :)
473Hint: .gnidnats llits er'uoy fi ,"lrepnur" eteled :tniH
474
475=back
476
7bac28a0 477=item Miscellaneous Things
478
479A full set of HTML documentation is installed, so you should be
480able to use it if you have a web browser installed on your
481system.
482
483C<perldoc> is also a useful tool for browsing information contained
484in the documentation, especially in conjunction with a pager
485like C<less> (recent versions of which have Win32 support). You may
486have to set the PAGER environment variable to use a specific pager.
487"perldoc -f foo" will print information about the perl operator
488"foo".
489
490If you find bugs in perl, you can run C<perlbug> to create a
491bug report (you may have to send it manually if C<perlbug> cannot
492find a mailer on your system).
493
494=back
495
68dc0745 496=head1 BUGS AND CAVEATS
497
f7c603cb 498An effort has been made to ensure that the DLLs produced by the two
499supported compilers are compatible with each other (despite the
500best efforts of the compiler vendors). Extension binaries produced
501by one compiler should also coexist with a perl binary built by
502a different compiler. In order to accomplish this, PERL.DLL provides
503a layer of runtime code that uses the C Runtime that perl was compiled
504with. Extensions which include "perl.h" will transparently access
505the functions in this layer, thereby ensuring that both perl and
506extensions use the same runtime functions.
68dc0745 507
8b88ae92 508If you have had prior exposure to Perl on Unix platforms, you will notice
509this port exhibits behavior different from what is documented. Most of the
7bac28a0 510differences fall under one of these categories. We do not consider
511any of them to be serious limitations (especially when compared to the
512limited nature of some of the Win32 OSes themselves :)
68dc0745 513
514=over 8
515
516=item *
517
518C<stat()> and C<lstat()> functions may not behave as documented. They
519may return values that bear no resemblance to those reported on Unix
7bac28a0 520platforms, and some fields (like the the one for inode) may be completely
521bogus.
68dc0745 522
523=item *
524
6890e559 525The following functions are currently unavailable: C<fork()>,
5aabfad6 526C<dump()>, C<chown()>, C<link()>, C<symlink()>, C<chroot()>,
26618a56 527C<setpgrp()> and related security functions, C<setpriority()>,
528C<getpriority()>, C<syscall()>, C<fcntl()>, C<getpw*()>,
2d7a9237 529C<msg*()>, C<shm*()>, C<sem*()>, C<alarm()>, C<socketpair()>,
530C<*netent()>, C<*protoent()>, C<*servent()>, C<*hostent()>,
531C<getnetby*()>.
26618a56 532This list is possibly incomplete.
6890e559 533
534=item *
535
68dc0745 536Various C<socket()> related calls are supported, but they may not
537behave as on Unix platforms.
538
539=item *
540
541The four-argument C<select()> call is only supported on sockets.
542
543=item *
544
f998180f 545The C<ioctl()> call is only supported on sockets (where it provides the
546functionality of ioctlsocket() in the Winsock API).
547
548=item *
549
2d7a9237 550Failure to spawn() a subprocess is indicated by setting $? to "255 << 8".
551C<$?> is set in a way compatible with Unix (i.e. the exitstatus of the
552subprocess is obtained by "$? >> 8", as described in the documentation).
68dc0745 553
554=item *
555
26618a56 556You can expect problems building modules available on CPAN if you
557build perl itself with -DUSE_THREADS. These problems should be resolved
558as we get closer to 5.005.
68dc0745 559
560=item *
561
562C<utime()>, C<times()> and process-related functions may not
563behave as described in the documentation, and some of the
564returned values or effects may be bogus.
565
566=item *
567
3e3baf6d 568Signal handling may not behave as on Unix platforms (where it
f7c603cb 569doesn't exactly "behave", either :). For instance, calling C<die()>
570or C<exit()> from signal handlers will cause an exception, since most
571implementations of C<signal()> on Win32 are severely crippled.
572Thus, signals may work only for simple things like setting a flag
573variable in the handler. Using signals under this port should
574currently be considered unsupported.
68dc0745 575
576=item *
577
1a159553 578C<kill()> is implemented, but doesn't have the semantics of
579C<raise()>, i.e. it doesn't send a signal to the identified process
580like it does on Unix platforms. Instead it immediately calls
581C<TerminateProcess(process,signal)>. Thus the signal argument is
582used to set the exit-status of the terminated process. This behavior
583may change in future.
584
585=item *
586
7bac28a0 587File globbing may not behave as on Unix platforms. In particular,
3e3baf6d 588if you don't use perlglob.bat for globbing, it will understand
589wildcards only in the filename component (and not in the pathname).
590In other words, something like "print <*/*.pl>" will not print all the
591perl scripts in all the subdirectories one level under the current one
592(like it does on UNIX platforms). perlglob.exe is also dependent on
593the particular implementation of wildcard expansion in the vendor
594libraries used to build it (which varies wildly at the present time).
595Using perlglob.bat (or File::DosGlob) avoids these limitations, but
596still only provides DOS semantics (read "warts") for globbing.
68dc0745 597
598=back
599
600Please send detailed descriptions of any problems and solutions that
601you may find to <F<perlbug@perl.com>>, along with the output produced
602by C<perl -V>.
603
604=head1 AUTHORS
605
606=over 4
607
3e3baf6d 608Gary Ng E<lt>71564.1743@CompuServe.COME<gt>
68dc0745 609
3e3baf6d 610Gurusamy Sarathy E<lt>gsar@umich.eduE<gt>
68dc0745 611
3e3baf6d 612Nick Ing-Simmons E<lt>nick@ni-s.u-net.comE<gt>
68dc0745 613
614=back
615
f7c603cb 616This document is maintained by Gurusamy Sarathy.
617
68dc0745 618=head1 SEE ALSO
619
620L<perl>
621
622=head1 HISTORY
623
624This port was originally contributed by Gary Ng around 5.003_24,
625and borrowed from the Hip Communications port that was available
626at the time.
627
628Nick Ing-Simmons and Gurusamy Sarathy have made numerous and
629sundry hacks since then.
630
3e3baf6d 631Borland support was added in 5.004_01 (Gurusamy Sarathy).
632
9036c72f 633Last updated: 12 July 1998
68dc0745 634
635=cut
3e3baf6d 636