home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / ast_text / faqs / perl-fqs / part1 < prev    next >
Encoding:
Internet Message Format  |  1993-06-28  |  38.2 KB

  1. Path: senator-bedfellow.mit.edu!enterpoop.mit.edu!news.media.mit.edu!uhog.mit.edu!eddie.mit.edu!europa.eng.gtefsd.com!howland.reston.ans.net!usc!cs.utexas.edu!asuvax!chnews!ornews.intel.com!news
  2. From: Randal L. Schwartz <merlyn@ora.com>
  3. Newsgroups: comp.lang.perl,news.answers,comp.answers
  4. Subject: comp.lang.perl FAQ (part 1 of 2)
  5. Followup-To: comp.lang.perl
  6. Date: 23 Jun 93 17:49:58 GMT
  7. Organization: Intel Corporation
  8. Lines: 866
  9. Approved: news-answers-request@MIT.Edu
  10. Message-ID: <merlyn.740857798.6721.2@kandinsky.intel.com>
  11. NNTP-Posting-Host: kandinsky.intel.com
  12. Xref: senator-bedfellow.mit.edu comp.lang.perl:17885 news.answers:9703 comp.answers:1116
  13.  
  14. Archive-name: perl-faq/part1
  15. Version: slightly modified from $Id: perl-info,v 1.2 92/11/30 05:22:33 tchrist Exp Locker: tchrist $
  16.  
  17. [I have not changed anything here, but I haven't seen Tom post this in
  18. a while.  Maybe I'm going to become the FAQ maintainer... sigh.  For
  19. one thing, this FAQ doesn't address the Llama Book... a glaring
  20. oversight. :-)
  21.  
  22. This version is slightly updated from the one I posted a few days
  23. ago, as pointed out to me by Henk Penning <henkp@cs.ruu.nl>.
  24.  
  25. -- merlyn@ora.com]
  26.  
  27. This posting contains answers to general information questions,
  28. mostly of a non-technical nature.  The following questions are 
  29. answered:
  30.  
  31. 1.1) What is Perl?
  32. 1.2) Is Perl hard to learn?
  33. 1.3) Should I program everything in Perl?
  34. 1.4) Where can I get Perl over the Internet?
  35. 1.5) Where can I get Perl via Email?
  36. 1.6) How can I get Perl via UUCP?
  37. 1.7) Where can I get more information on Perl?
  38. 1.8) Can people who aren't on USENET receive comp.lang.perl as a digest?
  39. 1.9) Are archives of comp.lang.perl available?
  40. 1.10) How do I get Perl to run on machine FOO?
  41. 1.11) Where can I get (info|inter|ora|sql|syb)perl?
  42. 1.12) There's an a2p and an s2p; why isn't there a p2c (perl-to-C)?
  43. 1.13) Where can I get undump for my machine?
  44. 1.14) Where can I get a perl-mode for emacs?
  45. 1.15) How can I use Perl interactively?
  46. 1.16) Is there a Perl shell? 
  47. 1.17) Is there a Perl profiler?
  48. 1.18) Is there a yacc for Perl?
  49. 1.19) How can I use curses with perl?
  50. 1.20) How can I use X with Perl?
  51. 1.21) What is perl4?  What is perl5?
  52. 1.22) How does Perl compare with languages like REXX or TCL?
  53. 1.23) Is it a Perl program or a Perl script?
  54. 1.24) What's the difference between "Perl" and "perl"?
  55. 1.25) What companies use or ship Perl?
  56. 1.26) Is there commercial, 3rd-party support for Perl?
  57. 1.27) Where can I get a list of the JAPH signature quotes?
  58. 1.28) Where can I get a list of Larry Wall witticisms?
  59. 1.29) Is there a pretty-printer for Perl?
  60.  
  61.  
  62. 1.1) What is Perl?
  63.  
  64.     A programming language, by Larry Wall <lwall@netlabs.com>.
  65.  
  66.     Here's the beginning of the description from the man page:
  67.  
  68.     Perl is an interpreted language optimized for scanning arbitrary text
  69.     files, extracting information from those text files, and printing reports
  70.     based on that information.  It's also a good language for many system
  71.     management tasks.  The language is intended to be practical (easy to use,
  72.     efficient, complete) rather than beautiful (tiny, elegant, minimal).  It
  73.     combines (in the author's opinion, anyway) some of the best features of C,
  74.     sed, awk, and sh, so people familiar with those languages should have
  75.     little difficulty with it.  (Language historians will also note some
  76.     vestiges of csh, Pascal, and even BASIC-PLUS.)  Expression syntax
  77.     corresponds quite closely to C expression syntax.  Unlike most Unix
  78.     utilities, Perl does not arbitrarily limit the size of your data--if
  79.     you've got the memory, Perl can slurp in your whole file as a single
  80.     string.  Recursion is of unlimited depth.  And the hash tables used by
  81.     associative arrays grow as necessary to prevent degraded performance.
  82.     Perl uses sophisticated pattern matching techniques to scan large amounts
  83.     of data very quickly.  Although optimized for scanning text, Perl can also
  84.     deal with binary data, and can make dbm files look like associative arrays
  85.     (where dbm is available).  Setuid Perl scripts are safer than C programs
  86.     through a dataflow tracing mechanism which prevents many stupid security
  87.     holes.  If you have a problem that would ordinarily use sed or awk or sh,
  88.     but it exceeds their capabilities or must run a little faster, and you
  89.     don't want to write the silly thing in C, then Perl may be for you.  There
  90.     are also translators to turn your sed and awk scripts into Perl scripts.
  91.  
  92.  
  93. 1.2) Is Perl hard to learn?
  94.     
  95.     No, Perl is easy to learn for two reasons.  
  96.    
  97.     The first reason is that most of Perl is derived from existing tools
  98.     and languages, ones that many people who turn to Perl already have
  99.     some familiarity with.  These include the C programming language, the
  100.     UNIX C library, the UNIX shell, sed, and awk.  If you already know
  101.     these somewhat, Perl should be very easy for you.
  102.  
  103.     The second reason that Perl is easy to learn is that you don't have to
  104.     know every thing there is to know about it in order to get good use
  105.     out of it.  In fact, just a very small subset, mostly borrowed from C,
  106.     the shell, and sed, will be enough for most tasks.  As you feel the
  107.     need or desire to use more sophisticated features (such as C
  108.     structures or networking), you can learn these as you go.  The
  109.     learning curve for Perl is not a steep one, especially if you have
  110.     the headstart of having a background in UNIX.  Rather, its learning
  111.     curve is gentle and gradual, but it *is* admittedly rather long.
  112.  
  113.     If you don't know C or UNIX at all, it'll be a steeper learning curve,
  114.     but what you then learn from Perl will carry over into other areas,
  115.     like using the C library, UNIX system call, regular expressions, and
  116.     associative arrays, just to name a few.  To know Perl is to know 
  117.     UNIX, and vice versa.
  118.  
  119.  
  120. 1.3) Should I program everything in Perl?
  121.  
  122.     Of course not.  You should choose the appropriate tool for the task at
  123.     hand.  While it's true that the answer to the question "Can I do (some
  124.     arbitrary task) in Perl?" is almost always "yes", that doesn't mean
  125.     this is necessarily a good thing to do.  For many people, Perl serves
  126.     as a great replacement for shell programming.  For a few people, it
  127.     also serves as a replacement for most of what they'd do in C.  But
  128.     for some things, Perl just isn't the optimal choice, such as tasks
  129.     requiring very complex data structures.
  130.  
  131.  
  132. 1.4) Where can I get Perl over the Internet?
  133.  
  134.     From any comp.sources.misc archive.   Initial sources  were posted to
  135.     Volume 18, Issues 19-54 at patchlevel 3.  The Patches 4-10 were posted
  136.     to Volume 20, Issues 56-62.  You can use the archie server
  137.     (see the alt.sources FAQ in news.answers) for ways to find these.
  138.  
  139.     These machines, at the very least, definitely have it available for
  140.     anonymous FTP:
  141.  
  142.     ftp.uu.net                137.39.1.2
  143.     archive.cis.ohio-state.edu      128.146.8.52
  144.     jpl-devvax.jpl.nasa.gov         128.149.1.143
  145.     ftp.netlabs.com         192.94.48.152
  146.     prep.ai.mit.edu            18.71.0.38
  147.     ftp.cs.ruu.nl            131.211.80.17  (Europe)
  148.  
  149.  
  150.  
  151.  
  152. 1.5) Where can I get Perl via Email?
  153.  
  154.     If you are in Europe, you might using the following site.  (I'm still
  155.     looking for a domestic site.) This information thanks to "Henk P.
  156.     Penning" <henkp@cs.ruu.nl>:  One automated fashion is as follows:
  157.  
  158.     Email: Send a message to 'mail-server@cs.ruu.nl' containing:
  159.      begin
  160.      path your_email_address
  161.      send help
  162.      send PERL/INDEX
  163.      end
  164.     The path-line may be omitted if your message contains a normal From:-line.
  165.     You will receive a help-file and an index of the directory that contains
  166.     the Perl stuff.
  167.  
  168.     If all else fails, mail to Larry usually suffices.
  169.  
  170.  
  171. 1.6) How can I get Perl via UUCP?
  172.  
  173.     You can get it from the site osu-cis; here is the appropriate info,
  174.     thanks to J Greely <jgreely@cis.ohio-state.edu> or <osu-cis!jgreely>.
  175.  
  176.     E-mail contact:
  177.         osu-cis!uucp
  178.     Get these two files first:
  179.         osu-cis!~/GNU.how-to-get.
  180.         osu-cis!~/ls-lR.Z
  181.     Current Perl distribution:
  182.         osu-cis!~/perl/4.0/kits@10/perl.kitXX.Z (XX=01-37)
  183.     How to reach osu-cis via uucp(L.sys/Systems file lines):
  184.     #
  185.     # Direct Trailblazer
  186.     #
  187.     osu-cis Any ACU 19200 1-614-292-5112 in:--in:--in: Uanon
  188.     #
  189.     # Direct V.32 (MNP 4)
  190.     # dead, dead, dead...sigh.
  191.     #
  192.     #osu-cis Any ACU 9600 1-614-292-1153 in:--in:--in: Uanon
  193.     #
  194.     # Micom port selector, at 1200, 2400, or 9600 bps.
  195.     # Replace ##'s below with 12, 24, or 96 (both speed and phone number).
  196.     #
  197.     osu-cis Any ACU ##00 1-614-292-31## "" \r\c Name? osu-cis nected \c GO \d\r\d\r\d\r in:--in:--in:
  198.      Uanon
  199.  
  200.     Modify as appropriate for your site, of course, to deal with your
  201.     local telephone system.  There are no limitations concerning the hours
  202.     of the day you may call.
  203.  
  204.     Another possibility is to use UUNET, although they charge you
  205.     for it.  You have been duly warned.  Here's the advert:
  206.  
  207.            Anonymous Access to UUNET's Source Archives
  208.  
  209.                  1-900-GOT-SRCS
  210.  
  211.      UUNET now provides access to its extensive collection of UNIX
  212.     related sources to non- subscribers.  By  calling  1-900-468-7727
  213.     and  using the login "uucp" with no password, anyone may uucp any
  214.     of UUNET's on line source collection.  Callers will be charged 40
  215.     cents  per  minute.   The charges will appear on their next tele-
  216.     phone bill.
  217.  
  218.      The  file  uunet!/info/help  contains  instructions.   The  file
  219.     uunet!/index//ls-lR.Z contains a complete list of the files available
  220.     and is updated daily.  Files ending in Z need to be uncompressed
  221.     before being used.   The file uunet!~/compress.tar is a tar
  222.     archive containing the C sources for the uncompress program.
  223.  
  224.      This service provides a  cost  effective  way  of  obtaining
  225.     current  releases  of sources without having to maintain accounts
  226.     with UUNET or some other service.  All modems  connected  to  the
  227.     900  number  are  Telebit T2500 modems.  These modems support all
  228.     standard modem speeds including PEP, V.32 (9600), V.22bis (2400),
  229.     Bell  212a  (1200), and Bell 103 (300).  Using PEP or V.32, a 1.5
  230.     megabyte file such as the GNU C compiler would cost $10  in  con-
  231.     nect  charges.   The  entire  55  megabyte X Window system V11 R4
  232.     would cost only $370 in connect time.  These costs are less  than
  233.     the  official  tape  distribution fees and they are available now
  234.     via modem.
  235.  
  236.               UUNET Communications Services
  237.            3110 Fairview Park Drive, Suite 570
  238.              Falls Church, VA 22042
  239.              +1 703 876 5050 (voice)
  240.               +1 703 876 5059 (fax)
  241.                 info@uunet.uu.net
  242.  
  243.  
  244.  
  245. 1.7) Where can I get more information on Perl?
  246.  
  247.     We'll cover five areas here: USENET (where you're probably reading
  248.     this), publications, the reference guide, examples on the Internet,
  249.     and Perl instructional courses.
  250.  
  251.     A.  USENET
  252.  
  253.     You should definitely read the USENET comp.lang.perl newsgroup or
  254.     mailing list for all sorts of discussions regarding the language,
  255.     bugs, features, history, humor, and trivia.  In this respect, it
  256.     functions both as a comp.lang.* style newsgroup and also as a user
  257.     group for the language; in fact, there's a mailing list called
  258.     ``perl-users'' that is bidirectionally gatewayed to the newsgroup; see
  259.     question #38 for details.  Larry Wall is a very frequent poster here,
  260.     as well as many (if not most) of the other seasoned Perl programmers.
  261.     It's the best place for the very latest information on Perl.
  262.  
  263.     B.  PUBLICATIONS
  264.  
  265.     If you've been dismayed by the ~80-page troffed Perl man page (or is
  266.     that man treatise?) you should look to ``the Camel Book'', written by
  267.     Larry and Randal L. Schwartz <merlyn@ora.com>, published as a Nutshell
  268.     Handbook by O'Reilly & Associates and entitled _Programming Perl_.
  269.     Besides serving as a reference guide for Perl, it also contains
  270.     tutorial material and is a great source of examples and cookbook
  271.     procedures, as well as wit and wisdom, tricks and traps, pranks and
  272.     pitfalls.  The code examples contained therein are available via
  273.     anonymous FTP from ftp.uu.net in
  274.     /published/oreilly/nutshell/perl/perl.tar.Z for your retrieval.
  275.     Corrections and additions to the book can be found in the Perl man
  276.     page right before the BUGS section under the heading ERRATA AND
  277.     ADDENDA.
  278.  
  279.     If you can't find the book in your local technical bookstore, the book
  280.     may be ordered directly from O'Reilly by calling 1-800-998-9938 if in
  281.     North America and 1-707-829-0515.  The book's ISBN is 0-937175-64-1.
  282.    
  283.     Autographed copies are *NO LONGER* available from TECHbooks --
  284.     you'll have to nab the authors in person if you want one.  Larry
  285.     routinely carries around a camel stamp for just such an occasion.
  286.  
  287.     Reasonably substantiated rumor has it that there will be another Perl
  288.     book out pretty soon, this one aimed more at beginners.  Look for it
  289.     from ORA towards the beginning of 93.
  290.  
  291.     Larry Wall has published a 3-part article on perl in Unix World
  292.     (August through October of 1991), and Rob Kolstad also had a 3-parter
  293.     in Unix Review (May through July of 1990).  Tom Christiansen also has
  294.     a brief overview article in the trade newsletter Unix Technology
  295.     Advisor from November of 1989.  You might also investigate "The Wisdom
  296.     of Perl" by Gordon Galligher from SunExpert magazine;  April 1991
  297.     Volume 2 Number 4.  The newest (Dec 92) Computer Language magazine
  298.     is also alleged to contain a cover article on Perl.
  299.  
  300.     The USENIX LISA (Large Installations Systems Administration) Conference
  301.     have for several years now included many papers of tools written in
  302.     Perl.  Old proceedings of these conferences are available; look in
  303.     your current issue of ";login:" or send mail to office@usenix.org 
  304.     for further information.
  305.  
  306.     C.  INTERNET
  307.  
  308.     For other examples of Perl scripts, look in the Perl source directory in
  309.     the eg subdirectory.  You can also find a good deal of them on 
  310.     archive.cis.ohio-state.edu in the pub/perl/scripts/ subdirectory.
  311.  
  312.     Another source for examples, currently only for anonymous FTP, is on
  313.     convex.com [130.168.1.1].  This contains, amongst other things,
  314.     a copy of the newsgroup up through Aug 91, a text retrieval database
  315.     for the newsgroup, a rather old and short troff version of Tom Christiansen's
  316.     perl tutorial (this was the version presented at Washington DC USENIX),
  317.     and quite a few of Tom's scripts.  You can look at the INDEX file
  318.     in /pub/perl/INDEX for a list of what's in that directory.   
  319.  
  320.     The Convex and Ohio State archives are mirrored on uunet
  321.     in /languages/perl/scripts-{convex,osu}.
  322.  
  323.     D.  REFERENCE GUIDE
  324.  
  325.     A nice reference guide by Johan Vromans <jv@mh.nl> is also available;
  326.     It is distributed in LaTeX (source) and PostScript (ready to
  327.     print) forms. Obsolete versions may still be available in TeX and troff
  328.     forms, although these don't print as nicely. The official kit
  329.     includes both LaTeX and PostScript forms, and can be FTP'd from
  330.     ftp.cs.ruu.nl [131.211.80.17], file /pub/DOC/perlref-4.035.tar.Z.
  331.     The reference guide comes with the O'Reilly book in a nice, glossy
  332.     card format.
  333.  
  334.     E.  PERL COURSES
  335.  
  336.     Various technical conferences, including USENIX, SUG, WCSAS, AUUG,
  337.     FedUnix, and Europen have been sponsoring tutorials of varying lengths
  338.     on Perl at their system administration and general conferences.  You
  339.     might consider attending one of these.  These classes are typically
  340.     taught by Tom Christiansen <tchrist@usenix.com>, although both Rob
  341.     Kolstad <kolstad@usenix.org> and Randal Schwartz <merlyn@ora.com> also
  342.     teach Perl on occasion.  Special appearances by Tom, Rob, and/or
  343.     Randal may also be negotiated.  Classes can run from one day up to a
  344.     week ranging over a wide range of subject matter (most are two or
  345.     three days), and can include lab time if you want; having lab time
  346.     with exercises is generally of great benefit.  Send us mail if your
  347.     organization is interested in having a Perl class taught at your site.
  348.  
  349.  
  350. 1.8) Can people who aren't on USENET receive comp.lang.perl as a digest?
  351.  
  352.     "Perl-Users" is the mailing list version of the comp.lang.perl
  353.     newsgroup.  If you're not lucky enough to be on USENET you can post to
  354.     comp.lang.perl by sending to one of the following addresses.  Which one
  355.     will work best for you depends on which nets your site is hooked into.
  356.     Ask your local network guru if you're not certain.
  357.  
  358.     Internet: PERL-USERS@VIRGINIA.EDU
  359.               Perl-Users@UVAARPA.VIRGINIA.EDU
  360.  
  361.     BitNet: Perl@Virginia
  362.  
  363.     uucp: ...!uunet!virginia!perl-users
  364.  
  365.     The Perl-Users list is bidirectionally gatewayed with the USENET
  366.     newsgroup comp.lang.perl.  This means that VIRGINIA functions as a
  367.     reflector.  All traffic coming in from the non-USENET side is
  368.     immediately posted to the newsgroup.  Postings from the USENET side are
  369.     periodically digested and mailed out to the Perl-Users mailing list.  A
  370.     digest is created and distributed at least once per day, more often if
  371.     traffic warrants.
  372.  
  373.     All requests to be added to or deleted from this list, problems,
  374.     questions, etc., should be sent to:
  375.  
  376.     Internet: Perl-Users-Request@Virginia.EDU
  377.               Perl-Users-Request@uvaarpa.Virginia.EDU
  378.  
  379.     BitNet: Perl-Req@Virginia
  380.  
  381.     uucp: ...!uunet!virginia!perl-users-request
  382.  
  383.     Coordinator: Marc Rouleau <mer6g@VIRGINIA.EDU>
  384.  
  385. 1.9) Are archives of comp.lang.perl available?
  386.  
  387.     Yes, although they're poorly organized.  You can get them from
  388.     the host ftp.cs.caltech.edu (131.215.128.204) in the directory  
  389.     /pub/comp.lang.perl.  The file is comp.lang.perl.tar.Z; this file
  390.     was last modified on February 15, 1992, and is 8.9 megabytes long.
  391.  
  392.     These are currently stored in news- or MH-style format; there are
  393.     subdirectories named things like "arrays", "programs", "taint", and
  394.     "emacs".  Unfortunately, only the first ~1600 or so messages have been
  395.     so categorized, and we're now up to almost 15000.  Furthermore, even
  396.     this categorization was haphazardly done and contains errors.  
  397.  
  398.     A more sophisticated query and retrieval mechanism is desirable.
  399.     Preferably one that allows you to retrieve article using a fast-access
  400.     indices, keyed on at least author, date, subject, thread (as in "trn")
  401.     and probably keywords.  Right now, the MH pick command works for this,
  402.     but it is very slow to select on 15000 articles.
  403.  
  404.     If you're serious about this, your best bet is probably to retrieve
  405.     the compressed tarchive and play with what you get.  Any suggestions
  406.     how to better sort this all out are extremely welcome.
  407.  
  408.     Currently the comp.lang.perl archives on convex.com are nearly a year
  409.     behind.  That's because I no longer have room to store them there.  I
  410.     do have them all on-line still, but they are not publicly accessible.
  411.     If you have a special request for a query on the old newsgroup
  412.     postings, and make nice noises in my direction, I can run the query
  413.     and send them to you.  Algebraic queries are like "find me anything
  414.     about this and that and the other thing but not this or whozits".  I
  415.     hope to put this in the form of a mailserver.  Donated software would
  416.     be fine. :-)
  417.  
  418.     The fast text-retrieval query system for this I'm currently using is
  419.     Liam Quin's excellent lqtext system, available from ftp.cs.toronto.edu
  420.     in /pub/lq-text* .
  421.  
  422.     Rumor has it that there are WAIS servers out there for comp.lang.perl
  423.     these days, but I haven't used them.  Any information on these would
  424.     be appreciated.
  425.  
  426.  
  427. 1.10) How do I get Perl to run on machine FOO?
  428.  
  429.     Perl comes with an elaborate auto-configuration script that allows Perl
  430.     to be painlessly ported to a wide variety of platforms, including many
  431.     non-UNIX ones.  Amiga and MS-DOS binaries are available on
  432.     jpl-devvax.jpl.nasa.gov [128.149.1.143] for anonymous FTP.  Try to bring
  433.     Perl up on your machine, and if you have problems, examine the README
  434.     file carefully, and if all else fails, post to comp.lang.perl;
  435.     probably someone out there has run into your problem and will be able
  436.     to help you.
  437.  
  438.     In particular, since they're so often asked about, here's some information 
  439.     for the MacIntosh from Matthias Ulrich Neeracher <neeri@iis.ethz.ch>:
  440.  
  441.     A port of Perl to the Apple Macintosh is available by anonymous
  442.     ftp to wuarchive.wustl.edu [128.252.135.4] from the file
  443.     /mirrors2/rascal.ics.utexas.edu/programming/Perl_402_MPW_CPT_bin .
  444.  
  445.     You can also get it from Host gatekeeper.dec.com [16.1.0.2]
  446.     in /.9/plan/perl/macperl/Perl_402_MPW_CPT_bin .
  447.  
  448.     The file is 1.1M and must be transferred in BINARY mode. Please
  449.     be considerate of the archive sites' users during CDT working hours.
  450.     (And, no, there is no way to get it by email).
  451.  
  452.     For European users, the file should soon appear on lth.se.
  453.  
  454.     To make optimal use of all the features of this port, you
  455.     should have MPW, ToolServer, and 5M of memory. There is also a
  456.     standalone version included, but it's currently of very limited
  457.     usefulness.
  458.  
  459.     This package contains all of the sources for compilation with
  460.     MPW C 3.2
  461.  
  462.     Here's more, from Timothy Murphy <tim@maths.tcd.ie >
  463.  
  464.  
  465.     I ported perl to the Mac, using Think C, a while ago.  I've
  466.     used it quite a lot since without problems.
  467.  
  468.     It is available from ftp.maths.tcd.ie in pub/Mac/perl.hqx .
  469.     The source (as diffs from the standard source) is in the
  470.     subdirectory pub/Mac/perl-4.035 .
  471.  
  472.     A Mac version of patch is also available in pub/Mac/patch.hqx
  473.     with source in pub/Mac/patch-2.0 .  Various other Mac ports of
  474.     GNU programs can be found in the same place.
  475.  
  476.     They all use a small "ThinkCPosix" library containing various
  477.     Unix-like functions, which again can be found in the same
  478.     place.
  479.  
  480.     And here's some VMS information from Rao V. Akella 
  481.     <rao@moose.cccs.umn.edu>:  (this appears to be an old port)
  482.  
  483.     You can pick up Perl for VMS (version 3.0.1.1 patchlevel 4) via
  484.     anonymous ftp from ftp.pitt.edu [130.49.253.1] in the
  485.     software/vms/perl subdirectory (there are two files there:
  486.     perl-pl18.bck and perl-pl4.bck).
  487.  
  488.     There is also a v3.018 on info.rz.uni-ulm.de [134.60.1.125] or
  489.     vms.huji.ac.il [128.139.4.3] in /pub/VMS/misc (information courtesy 
  490.     of Anders Rolff <rolff@scotty.eurokom.ie>).
  491.  
  492.     And here is a recent version for MS-DOS from Budi Rahard 
  493.     <rahard@ee.UManitoba.CA>, who says:
  494.  
  495.     I am collecting MS-DOS Perl(s) in ftp.ee.umanitoba.ca directory
  496.     /pub/msdos/perl.  Currently I received three versions of Perl v4.019
  497.     and one of 4.010.  (Tommy Thorn <tthorn@daimi.aau.dk> and Len Reed
  498.     <holos0!lbr@gatech.edu>)  
  499.  
  500.     There is now a 4.035 for 386 [DOS], Hitoshi Doi <doi@jrd.december.com>
  501.     port, is available ftp.ee.umanitoba.ca as /pub/msdos/perl/perl386.zoo .
  502.  
  503.     Please contact the porters directly in case of questions about
  504.     these ports.
  505.  
  506.  
  507. 1.11) Where can I get (info|inter|ora|sql|syb)perl?
  508.  
  509.     Numerous database-oriented extensions to Perl have been written.
  510.     These amount to using the usub mechanism (see the usub/ subdirectory
  511.     in the distribution tree) to link in a database library, allowing
  512.     embedded calls to Informix, Interbase, Oracle, Ingres, and Sybase.
  513.     There is currently a project underway, organized by Buzz Moschetti
  514.     <buzz@bear.com>, to create a higher level interface (DBperl) that
  515.     will allow you to write your queries in a database-independent
  516.     fashion.  If you're interested, send mail to
  517.     <perldb-interest-request@vix.com> about it.
  518.    
  519.     Meanwhile, here are the authors of the various extensions:
  520.  
  521.     What            Target DB       Who
  522.     --------        -----------     ----------------------------------------
  523.     Infoperl        Informix        Kurt Andersen (kurt@hpsdid.sdd.hp.com)
  524.     Interperl       Interbase       Buzz Moschetti (buzz@bear.com)
  525.     Oraperl         Oracle          Kevin Stock (kstock@encore.com)
  526.     Sqlperl         Ingres          Ted Lemon (mellon@ncd.com)
  527.     Sybperl         Sybase          Michael Peppler (mpeppler@itf.ch)
  528.  
  529.  
  530. 1.12) There's an a2p and an s2p; why isn't there a p2c (perl-to-C)?
  531.  
  532.     Because the Pascal people would be upset that we stole their name. :-)
  533.  
  534.     The dynamic nature of Perl's do and eval operators (and remember that
  535.     constructs like s/$mac_donald/$mac_gregor/eieio count as an eval) would
  536.     make this very difficult.  To fully support them, you would have to put
  537.     the whole Perl interpreter into each compiled version for those scripts
  538.     using them.  This is what undump does right now, if your machine has it.
  539.     If what you're doing will be faster in C than in Perl, maybe it should
  540.     have been written in C in the first place.  For things that ought to be
  541.     written in Perl, the interpreter will be just about as fast, because the
  542.     pattern matching routines won't work any faster linked into a C program.
  543.     Even in the case of simple Perl programs that don't do any fancy evals, the
  544.     major gain would be in compiling the control flow tests, with the rest
  545.     still being a maze of twisty, turny subroutine calls.  Since these are not
  546.     usually the major bottleneck in the program, there's not as much to be
  547.     gained via compilation as one might think.
  548.  
  549.  
  550. 1.13) Where can I get undump for my machine?
  551.  
  552.     The undump program comes from the TeX distribution.  If you have TeX, then
  553.     you may have a working undump.  If you don't, and you can't get one,
  554.     *AND* you have a GNU emacs working on your machine that can clone itself,
  555.     then you might try taking its unexec() function and compiling Perl with
  556.     -DUNEXEC, which will make Perl call unexec() instead of abort().  You'll
  557.     have to add unexec.o to the objects line in the Makefile.  If you succeed,
  558.     post to comp.lang.perl about your experience so others can benefit from it.
  559.  
  560.  
  561. 1.14) Where can I get a perl-mode for emacs?
  562.  
  563.     In the perl4.0 source directory, you'll find a directory called
  564.     "emacs", which contains several files that should help you.
  565.  
  566.  
  567. 1.15) How can I use Perl interactively?
  568.     
  569.     The easiest way to do this is to run Perl under its debugger.
  570.     If you have no program to debug, you can invoke the debugger
  571.     on an `empty' program like this:
  572.  
  573.         perl -de 0
  574.  
  575.     (The more positive amongst us prefer "perl -de 1". :-)
  576.  
  577.     Now you can type in any legal Perl code, and it will be immediately
  578.     evaluated.  You can also examine the symbol table, get stack
  579.     backtraces, check variable Values, and if you want to, set 
  580.     breakpoints and do the other things you can do in a symbolic debugger.
  581.  
  582.  
  583. 1.16) Is there a Perl shell? 
  584.     
  585.    Not really.  Perl is a programming language, not a command
  586.    interpreter.  There is a very simple one called "perlsh"
  587.    included in the Perl source distribution.  It just does this:
  588.  
  589.     $/ = '';        # set paragraph mode
  590.     $SHlinesep = "\n";
  591.     while ($SHcmd = <>) {
  592.         $/ = $SHlinesep;
  593.         eval $SHcmd; print $@ || "\n";
  594.         $SHlinesep = $/; $/ = '';
  595.     }
  596.  
  597.    Not very interesting, eh?  
  598.  
  599.    Daniel Smith <dansmith@autodesk.com> is working on an interactive Perl
  600.    shell called SoftList.  It's currently at version 3.0beta.  SoftList
  601.    3.0 has tcsh-like command line editing, can let you define a file of
  602.    aliases so that you can run chunks of perl or UNIX commands, and so
  603.    on.  You can send mail to him for further information and availability.
  604.  
  605.  
  606. 1.17) Is there a Perl profiler?
  607.  
  608.     While there isn't one included with the perl source distribution,
  609.     various folks have written packages that allow you to do at least some
  610.     sort of profiling.  The strategy usually includes modifying the perl
  611.     debugger to handle profiling.  Authors of these packages include
  612.  
  613.     Wayne Thompson         <me@anywhere.EBay.Sun.COM>
  614.     Ray Lischner         <lisch@sysserver1.mentor.com>
  615.     Kresten Krab Thorup     <krab@iesd.auc.dk>  
  616.  
  617.     The original articles by these folks containing their
  618.     profilers are available on convex.com in 
  619.     /pub/perl/information/profiling.shar via anon ftp.
  620.  
  621.  
  622. 1.18) Is there a yacc for Perl?
  623.  
  624.     Yes!! It's a version of Berkeley yacc that outputs Perl code instead
  625.     of C code!  You can get this from ftp.sterling.com [192.124.9.1] in
  626.     /local/perl-byacc1.8.1.tar.Z, or send the author mail for details.
  627.  
  628.  
  629. 1.19) How can I use curses with perl?
  630.  
  631.     One way is to build a curseperl binary by linking in your C curses
  632.     library as described in the usub subdirectory of the perl sources.
  633.     This requires a modicum of work, but it will be reasonably fast
  634.     since it's all in C (assuming you consider curses reasonably fast. :-)  
  635.     Programs written using this method require the modified curseperl,
  636.     not vanilla perl, to run.  While this is something of a disadvantage,
  637.     experience indicates that it's better to use curseperl than to 
  638.     try to roll your own using termcap directly.
  639.  
  640.     Another possibility is to use Henk Penning's cterm package, a curses
  641.     emulation library written in perl.  cterm is actually a separate
  642.     program with which you communicate via a pipe.  It is available from
  643.     ftp.cs.ruu.nl [131.211.80.17] via anonymous ftp. in the directory
  644.     pub/PERL.  You may also acquire the package via email in compressed,
  645.     uuencoded form by sending a message to mail-server@cs.ruu.nl
  646.     containing these lines:
  647.  
  648.     begin
  649.     send PERL/cterm.shar.Z
  650.     end
  651.  
  652.     See the question on retrieving perl via mail for more information on
  653.     how to get retrieve other items of interest from the mail server
  654.     there.
  655.  
  656.  
  657. 1.20) How can I use X with Perl?
  658.  
  659.     Right now, you have several choices.  You can wait for perl5, use
  660.     the WAFE or STDWIN packages, or try to make your own usub bindings. 
  661.  
  662.     Perl5 is anticipated to be released with bindings for X, called 
  663.     guiperl.  An exciting prototype for this, written by Jon Biggar
  664.     <jon@netlabs.com>, Larry's *other* brother-in-law and officemate, 
  665.     is already up and running inside of Netlabs.  This program addresses
  666.     the same dynamic gui-building problem space as does tcl/tk.
  667.     
  668.     If you can't wait or don't think that guiperl will do what you want,
  669.     a stab at Motif bindings was begun by Theodore C. Law
  670.     <TEDLAW@TOROLAB6.VNET.IBM.COM> area.  His article about this is 
  671.     on convex.com in /pub/perl/info/motif for anon ftp.
  672.  
  673.     STDWIN is a library written by Guido van Rossum <guido@cwi.nl>
  674.     (author of the Python programming language) that is portable 
  675.     between Mac, Dos and X11.  One could write a Perl agent to
  676.     speak to this STDWIN server.
  677.  
  678.     WAFE is a package that implements a symbolic interface to the Athena
  679.     widgets (X11R5). A typical Wafe application consists in our framework
  680.     of two parts: the front-end (we call it Wafe for Widget[Athena]front
  681.     end) and an application program running typically as separate process.
  682.     The application program can be implemented in an arbitrary programming
  683.     language and talks to the front-end via stdio.  Since Wafe (the
  684.     front-end) was developed using the extensible TCL shell (cite John
  685.     Ousterhout), an application program can dynamically submit requests to
  686.     the front-end to build up the graphical user interface; the
  687.     application can even down-load application specific procedures into
  688.     the front-end.  The distribution contains sample application programs
  689.     in Perl, GAWK, Prolog, TCL, and C talking to the same Wafe binary.
  690.     Many of the demo applications are implemented in Perl.  Wafe 0.9 can
  691.     be obtained via anonymous ftp from 
  692.     ftp.wu-wien.ac.at:pub/src/X11/wafe-0.9.tar.Z
  693.     (for people without name server: the ip address is 137.208.3.5)
  694.  
  695.  
  696. 1.21) What is perl4?  What is perl5?
  697.  
  698.     The answer to what is perl4 is nearly anything you might otherwise 
  699.     program in shell or C.  The answer to what is perl5 is basically
  700.     Perl: the Next Generation.  In fact, it's essentially a complete
  701.     rewrite of perl from the bottom up, and back again.
  702.  
  703.     Larry gave a talk on perl5 at a Bay LISA meeting as well as at the
  704.     most recent USENIX LISA conference in Long Beach in which he timorously
  705.     admitted that perl5 might possibly be beta released in early 1993.
  706.     He enumerated some of the following features.  Note that not only have
  707.     not all these been implemented yet, the ones further down the list
  708.     might well not get done at all.
  709.  
  710.     a faster, tighter, more flexible interpreter
  711.     very easy GUI Perl applications using X bindings ("guiperl")
  712.     embeddable Perl code in C code: cc prog.c -lperl 
  713.     multiple coresident perl interpreters:
  714.         perhaps threading and/or coroutines
  715.     named argument passing:
  716.         some_func( OC => $red, TOF => "\f");
  717.     recursive lists:
  718.         [a, b, [c, d], e] has 4 elts, the 3rd being itself a list
  719.     typed pointers and generalized indirection:
  720.         like @{$aptr} or &{$fptr} or &{ $table[$index] . "func" }().
  721.     merging of list operator and function calling syntax:
  722.         split /pat/, $string;
  723.     subroutines without &'s:   myfunc($arg);
  724.     generalization of dbm binding for assoc arrays to handle
  725.         any generic fetch/store/open/close/flush package.
  726.         (thus allowing both dbm and gdbm at once)
  727.     object oriented programming:
  728.         STDOUT->flush(1);
  729.         give dog $bone;
  730.     lexical scoping
  731.     dynamic loading of C libraries for systems that can
  732.     byte-compiled code for speed and maybe security
  733.  
  734.     It's tempting to want this stuff soon, since the sooner it comes
  735.     out the sooner we can all build really cool applications.  But the
  736.     longer Larry works on it, the more items from this list will actually
  737.     get done, and the more robust the release will be.  So let's not
  738.     ask him about it too often.
  739.  
  740.  
  741. 1.22) How does Perl compare with languages like REXX or TCL?
  742.  
  743.     REXX is an interpreted programming language first seen on IBM systems,
  744.     and TCL is John Ousterhout's embeddable command language.  TCL's most
  745.     intriguing feature for many people is the tcl/tk toolset that allows
  746.     for interpreted X-based tools.
  747.  
  748.     To avoid any flamage, if you really want to know the answer to this
  749.     question, probably the best thing to do is try to write equivalent
  750.     code to do a set of tasks.  All three have their own newsgroups in
  751.     which you can learn about (but hopefully not argue about) these
  752.     languages.
  753.  
  754.     To find out more about these or other languages, you might also check
  755.     out David Muir Sharnoff <muir@tfs.com>'s posting on "Catalog of
  756.     compilers, interpreters, and other language tools" which he posts to
  757.     comp.lang.misc, comp.sources.d, comp.archives.admin, and the
  758.     news.answers newsgroups.  It's a comprehensive treatment of many
  759.     different languages.  (Caveat lector: he considers Perl's syntax
  760.     "unappealing".)   This list is archived on convex.com in 
  761.     /pub/perl/info/lang-survey.shar .
  762.  
  763.  
  764. 1.23) Is it a Perl program or a Perl script?
  765.  
  766.     Certainly. :-)
  767.  
  768.     Current UNIX parlance holds that anything interpreted
  769.     is a script, and anything compiled into native machine
  770.     code is a program.  However, others hold that a program
  771.     is a program is a program: after all, one seldom discusses
  772.     scripts written in BASIC or LISP.  Larry considers it
  773.     a program if it's set in stone and you can't change it,
  774.     whereas if you go in and hack on it, then it's a script.
  775.  
  776.     But doesn't really matter.  The terms are generally 
  777.     interchangeable today.
  778.  
  779.  
  780. 1.24) What's the difference between "Perl" and "perl"?
  781.  
  782.      32 :-)  [  ord('p') - ord('P')  ]
  783.  
  784.      Larry now uses "Perl" to signify the language proper and "perl" the
  785.      implementation of it, i.e. the current interpreter.  Hence my quip
  786.      that "Nothing but perl can parse Perl."
  787.  
  788.      On the other hand, the aesthetic value of casewise parallelism
  789.      in "awk", "sed", and "perl" as much require the lower-case 
  790.      version as "C", "Pascal", and "Perl" require the 
  791.      upper-case version.  It's also easier to type "Perl" in 
  792.      typeset print than to be constantly switching in Courier. :-)
  793.     
  794.      In other words, it doesn't matter much, especially if all
  795.      you're doing is hearing someone talk about the language;
  796.      case is hard to distingish aurally.
  797.  
  798.  
  799. 1.25) What companies use or ship Perl?
  800.  
  801.     At this time, the known list of companies that ship Perl includes at
  802.     least the following: 
  803.  
  804.     BSDI
  805.     Comdisco Systems
  806.     CONVEX Computer Corporation
  807.     Dell
  808.     Integraph
  809.     Kubota Pacific (/usr/contrib)
  810.     Netlabs
  811.  
  812.     Many other companies use Perl internally for purposes of tools
  813.     development, systems administration, installation scripts, and test
  814.     suites.  Rumor has it that the large workstation vendors (the TLA set)
  815.     are seriously looking into shipping Perl with their standard systems
  816.     "soon".
  817.  
  818.     People with support contracts with their vendors are actively 
  819.     encouraged to submit enhancement requests that Perl be shipped 
  820.     as part of their standard system.  It would, at the very least,
  821.     reduce the FTP load on the Internet. :-)
  822.  
  823.  
  824. 1.26) Is there commercial, 3rd-party support for Perl?
  825.  
  826.     No.  Although perl is included in the GNU distribution, at last check,
  827.     Cygnus does not offer support for it.  However, it's unclear whether
  828.     they've ever been offered sufficient financial incentive to do so.
  829.  
  830.     On the other hand, you do have comp.lang.perl as a totally gratis
  831.     support mechanism.  As long as you ask "interesting" questions, 
  832.     you'll probably get plenty of help. :-)
  833.  
  834. 1.27) Where can I get a list of the JAPH signature quotes?
  835.  
  836.     These are the "just another perl hacker" signatures that
  837.     some people sign their postings with.  About 100 of the 
  838.     of the earlier ones are on convex.com in /pub/perl/info/japh.
  839.  
  840. 1.28) Where can I get a list of Larry Wall witticisms?
  841.  
  842.     Over a hundred quips by Larry, from postings of his or source code,
  843.     can be found on convex.com in /pub/perl/info/lwall-quotes.  
  844.  
  845. 1.29) Is there a pretty-printer for Perl?
  846.  
  847.     That depends on what you mean.  If you want something 
  848.     that works like vgrind on Perl programs, then the answer
  849.     is "yes, nearly".  Here's a vgrind entry for perl:
  850.  
  851.     PERL|perl|Perl:\
  852.         :pb=(^\d?sub\d\p\d?|\{):\
  853.         :bb={:be=}:cb=#:ce=$:sb=":se=\e":lb=':\
  854.         :le=\e':tl:\
  855.         :id=_:\
  856.         :kw=\
  857.         if for foreach unless until while continue else elsif \
  858.         do eval require \
  859.         die exit \
  860.         defined delete reset \
  861.         goto last redo next dump \
  862.         local undef return  \
  863.         write format  \
  864.         sub package
  865.  
  866.     It doesn't actually do everything right; in particular, 
  867.     things like $#, $', s#/foo##, and $foo'bar all confuse it.
  868.  
  869.     If what you mean is whether there is a program that will
  870.     reformat the program much as indent(1) will do for C, then
  871.     the answer is no.  The complex feedback between the scanner
  872.     and the parser (as in the things that confuse vgrind) make
  873.     it challenging to write at best to write a stand-alone C parser.
  874.  
  875. print "Just another Perl hacker,"
  876. -- 
  877. Randal L. Schwartz / Stonehenge Consulting Services (503)777-0095
  878. merlyn@ora.com (semi-permanent) merlyn@kandinsky.intel.com (NEWSREADING ONLY)
  879. Quote: "Welcome to Portland, Oregon, home of the California Raisins!"
  880.