Add information about Scalar::Util::blessed.
[p5sagit/p5-mst-13.2.git] / pod / perlfaq3.pod
index 0400b27..49cae1a 100644 (file)
@@ -73,10 +73,11 @@ why what it's doing isn't what it should be doing.
 
 =head2 How do I profile my Perl programs?
 
-You should get the Devel::DProf module from CPAN and also use
-Benchmark.pm from the standard distribution.  Benchmark lets you time
-specific portions of your code, while Devel::DProf gives detailed
-breakdowns of where your code spends its time.
+You should get the Devel::DProf module from the standard distribution
+(or separately on CPAN) and also use Benchmark.pm from the standard 
+distribution.  The Benchmark module lets you time specific portions of 
+your code, while Devel::DProf gives detailed breakdowns of where your 
+code spends its time.
 
 Here's a sample use of Benchmark:
 
@@ -156,36 +157,184 @@ the trick.  And if not, it's easy to hack into what you want.
 
 =head2 Is there an IDE or Windows Perl Editor?
 
-If you're on Unix, you already have an IDE--Unix itself.  This powerful
-IDE derives from its interoperability, flexibility, and configurability.
-If you really want to get a feel for Unix-qua-IDE, the best thing to do
-is to find some high-powered programmer whose native language is Unix.
-Find someone who has been at this for many years, and just sit back
-and watch them at work.  They have created their own IDE, one that
-suits their own tastes and aptitudes.  Quietly observe them edit files,
-move them around, compile them, debug them, test them, etc.  The entire
-development *is* integrated, like a top-of-the-line German sports car:
-functional, powerful, and elegant.  You will be absolutely astonished
-at the speed and ease exhibited by the native speaker of Unix in his
-home territory.  The art and skill of a virtuoso can only be seen to be
-believed.  That is the path to mastery--all these cobbled little IDEs
-are expensive toys designed to sell a flashy demo using cheap tricks,
-and being optimized for immediate but shallow understanding rather than
-enduring use, are but a dim palimpsest of real tools.
-
-In short, you just have to learn the toolbox.  However, if you're not
-on Unix, then your vendor probably didn't bother to provide you with
-a proper toolbox on the so-called complete system that you forked out
-your hard-earned cash for.
-
-PerlBuilder (http://www.solutionsoft.com/perl.htm) is an integrated
-development environment for Windows that supports Perl development.
-Perl programs are just plain text, though, so you could download emacs
-for Windows (http://www.gnu.org/software/emacs/windows/ntemacs.html)
-or a vi clone (vim) which runs on for win32
-(http://www.cs.vu.nl/%7Etmgil/vi.html).  If you're transferring
-Windows files to Unix be sure to transfer them in ASCII mode so the ends
-of lines are appropriately mangled.
+Perl programs are just plain text, so any editor will do.
+
+If you're on Unix, you already have an IDE--Unix itself.  The UNIX
+philosophy is the philosophy of several small tools that each do one
+thing and do it well.  It's like a carpenter's toolbox.
+
+If you want a Windows IDE, check the following:
+
+=over 4
+
+=item CodeMagicCD
+
+http://www.codemagiccd.com/
+
+=item Komodo
+
+ActiveState's cross-platform, multi-language IDE has Perl support,
+including a regular expression debugger and remote debugging
+(http://www.ActiveState.com/Products/Komodo/index.html).
+(Visual Perl, a Visual Studio.NET plug-in is currently (early 2001)
+in beta (http://www.ActiveState.com/Products/VisualPerl/index.html)).
+
+=item The Object System
+
+(http://www.castlelink.co.uk/object_system/) is a Perl web
+applications development IDE.
+
+=item PerlBuilder
+
+(http://www.solutionsoft.com/perl.htm) is an integrated development
+environment for Windows that supports Perl development.
+
+=item Perl code magic
+
+(http://www.petes-place.com/codemagic.html).
+
+=item visiPerl+
+
+http://helpconsulting.net/visiperl/, from Help Consulting.
+
+=back
+
+For editors: if you're on Unix you probably have vi or a vi clone already,
+and possibly an emacs too, so you may not need to download anything.
+In any emacs the cperl-mode (M-x cperl-mode) gives you perhaps the
+best available Perl editing mode in any editor.
+
+For Windows editors: you can download an Emacs
+
+=over 4
+
+=item GNU Emacs
+
+http://www.gnu.org/software/emacs/windows/ntemacs.html
+
+=item MicroEMACS
+
+http://members.nbci.com/uemacs/
+
+=item XEmacs
+
+http://www.xemacs.org/Download/index.html
+
+=back
+
+or a vi clone such as
+
+=over 4
+
+=item Elvis
+
+ftp://ftp.cs.pdx.edu/pub/elvis/ http://www.fh-wedel.de/elvis/
+
+=item Vile
+
+http://vile.cx/
+
+=item Vim
+
+http://www.vim.org/
+
+win32: http://www.cs.vu.nl/%7Etmgil/vi.html
+
+=back
+
+For vi lovers in general, Windows or elsewhere:
+http://www.thomer.com/thomer/vi/vi.html.
+
+nvi (http://www.bostic.com/vi/, available from CPAN in src/misc/) is
+yet another vi clone, unfortunately not available for Windows, but in
+UNIX platforms you might be interested in trying it out, firstly because
+strictly speaking it is not a vi clone, it is the real vi, or the new
+incarnation of it, and secondly because you can embed Perl inside it
+to use Perl as the scripting language.  nvi is not alone in this,
+though: at least also vim and vile offer an embedded Perl.
+
+The following are Win32 multilanguage editor/IDESs that support Perl:
+
+=over 4
+
+=item Codewright
+
+http://www.starbase.com/
+
+=item MultiEdit
+
+http://www.MultiEdit.com/
+
+=item SlickEdit
+
+http://www.slickedit.com/
+
+=back
+
+There is also a toyedit Text widget based editor written in Perl
+that is distributed with the Tk module on CPAN.  The ptkdb
+(http://world.std.com/~aep/ptkdb/) is a Perl/tk based debugger that
+acts as a development environment of sorts.  Perl Composer
+(http://perlcomposer.sourceforge.net/vperl.html) is an IDE for Perl/Tk
+GUI creation.
+
+In addition to an editor/IDE you might be interested in a more
+powerful shell environment for Win32.  Your options include
+
+=over 4
+
+=item Bash
+
+from the Cygwin package (http://sources.redhat.com/cygwin/)
+
+=item Ksh
+
+from the MKS Toolkit (http://www.mks.com/), or the Bourne shell of
+the U/WIN environment (http://www.research.att.com/sw/tools/uwin/)
+
+=item Tcsh
+
+ftp://ftp.astron.com/pub/tcsh/, see also
+http://www.primate.wisc.edu/software/csh-tcsh-book/
+
+=item Zsh
+
+ftp://ftp.blarg.net/users/amol/zsh/, see also http://www.zsh.org/
+
+=back
+
+MKS and U/WIN are commercial (U/WIN is free for educational and
+research purposes), Cygwin is covered by the GNU Public License (but
+that shouldn't matter for Perl use).  The Cygwin, MKS, and U/WIN all
+contain (in addition to the shells) a comprehensive set of standard
+UNIX toolkit utilities.
+
+If you're transferring text files between Unix and Windows using FTP
+be sure to transfer them in ASCII mode so the ends of lines are
+appropriately converted.
+
+On Mac OS the MacPerl Application comes with a simple 32k text editor
+that behaves like a rudimentary IDE.  In contrast to the MacPerl Application
+the MPW Perl tool can make use of the MPW Shell itself as an editor (with
+no 32k limit).
+
+=over 4
+
+=item BBEdit and BBEdit Lite
+
+are text editors for Mac OS that have a Perl sensitivity mode
+(http://web.barebones.com/).
+
+=item Alpha
+
+is an editor, written and extensible in Tcl, that nonetheless has
+built in support for several popular markup and programming languages
+including Perl and HTML (http://alpha.olm.net/).
+
+=back
+
+Pepper and Pe are programming language sensitive text editors for Mac
+OS X and BeOS respectively (http://www.hekkelman.com/).
 
 =head2 Where can I get Perl macros for vi?
 
@@ -244,8 +393,7 @@ See the next question on ``How can I make my Perl program run faster?''
 =head2 How can I make my Perl program run faster?
 
 The best way to do this is to come up with a better algorithm.  This
-can often make a dramatic difference.  Chapter 8 in the Camel has some
-efficiency tips in it you might want to look at.  Jon Bentley's book
+can often make a dramatic difference.  Jon Bentley's book
 ``Programming Pearls'' (that's not a misspelling!)  has some good tips
 on optimization, too.  Advice on benchmarking boils down to: benchmark
 and profile to make sure you're optimizing the right part, look for