home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _13602ddd61303ac198cd55a03f52e28c < prev    next >
Text File  |  2000-03-22  |  32KB  |  576 lines

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <HTML>
  3.  
  4. <HEAD>
  5. <TITLE>perlwin32faq4 - Windows NT and Windows 95</TITLE>
  6. <LINK rev="made" href="mailto:support@ActiveState.com">
  7. <META name="GENERATOR" charset="iso-8859-1" content="Microsoft FrontPage 4.0">
  8. <META name="ProgId" content="FrontPage.Editor.Document">
  9. <LINK rel="STYLESHEET" href="../../Active.css" type="text/css" media="screen">
  10. </HEAD>
  11.  
  12. <BODY bgcolor="#ffffff">
  13.  
  14. <TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
  15.   <TR>
  16.     <TD class="block" valign="MIDDLE" width="100%" bgcolor="#cccccc"><STRONG>
  17.       <P class="block"> ActivePerl FAQ</P>
  18.       </STRONG></TD>
  19.   </TR>
  20. </TABLE>
  21.  
  22. <UL>
  23.   <LI><A href="#NAME">NAME</A></LI>
  24.   <LI><A href="#DESCRIPTION">DESCRIPTION</A>
  25.     <UL>
  26.       <LI><A href="#Where_can_I_get_Windows_NT_infor">Where can I get Windows NT information?</A></LI>
  27.       <LI><A href="#Where_can_I_get_Windows_95_infor">Where can I get Windows 95/98 information?</A></LI>
  28.       <LI><A href="#What_s_the_equivalent_of_the_she">What's the equivalent of the shebang
  29.         ("#!") syntax for Win32?</A></LI>
  30.       <LI><A href="#What_s_the_equivalent_of_chmod_f">What's the equivalent of chmod for Win32?</A></LI>
  31.       <LI><A href="#How_do_I_send_email_from_Perl_fo">How do I send email from ActivePerl?</A></LI>
  32.       <LI><A href="#How_do_I_schedule_jobs_on_Win32_">How do I schedule jobs on Win32 platforms?</A></LI>
  33.       <LI><A href="#Where_can_I_find_Win32_ports_of_">Where can I find Win32 ports of UNIX tools?</A></LI>
  34.       <LI><A href="#What_is_a_Windows_NT_service_">What is a Windows NT service?</A></LI>
  35.       <LI><A href="#How_do_I_run_a_Perl_script_as">How do I run a Perl script as a Windows NT
  36.         service?</A></LI>
  37.       <LI><A href="#How_do_I_set_permissions_on_a_fi">How do I set permissions on a file?</A></LI>
  38.       <LI><A href="#How_do_I_associate_Perl_scripts_">How do I associate Perl scripts with perl?</A></LI>
  39.       <LI><A href="#perl_dash_e">Why doesn't "perl -e" work?</A></LI>
  40.       <LI><A href="#What_editors_are_available_for_Windows">What editors are available for Windows?</A></LI>
  41.     </UL>
  42.   </LI>
  43.   <LI><A href="#AUTHOR_AND_COPYRIGHT">AUTHOR AND COPYRIGHT</A></LI>
  44. </UL>
  45. <HR>
  46. <H1><A name="NAME">NAME</A></H1>
  47. <P>perlwin32faq4 - Windows NT and Windows 95</P>
  48. <HR>
  49. <H1><A name="DESCRIPTION">DESCRIPTION</A></H1>
  50. <P>Useful information about Windows NT and Windows 95 for Perl developers</P>
  51. <HR>
  52. <H2><A name="Where_can_I_get_Windows_NT_infor">Where can I get Windows NT information?</A></H2>
  53. <P>A good starting place is the printed documentation that came with Windows NT and on the Windows
  54. NT CD in the <EM>support\books</EM> directory. Windows Help files are also available.</P>
  55. <P>You can get some in-depth information on Windows NT from the Windows NT Resource Kit, available
  56. at bookstores and from Microsoft. Microsoft TechNet is also a valuable resource.</P>
  57. <P>World Wide Web support for Windows NT Server is at:</P>
  58. <PRE>
  59.     <A href="http://www.microsoft.com/ntserver/">http://www.microsoft.com/ntserver/</A>
  60. </PRE>
  61. <P>Support for Windows NT Workstation is at:</P>
  62. <PRE>
  63.     <A href="http://www.microsoft.com/ntworkstation/">http://www.microsoft.com/ntworkstation/</A>
  64. </PRE>
  65. <HR>
  66. <H2><A name="Where_can_I_get_Windows_95_infor">Where can I get Windows 95/98 information?</A></H2>
  67. <P>Printed documentation comes with Windows 95/98, as well as some documentation on the CD-ROM. Help
  68. files are available from the Start menu.</P>
  69. <P>The Windows 95 Resource Kit contains in-depth information on Windows 95. It's available at
  70. bookstores and software stores.</P>
  71. <P>World Wide Web support for Windows 95/98 is at:</P>
  72. <PRE>
  73.     <A href="http://www.microsoft.com/windows95/">http://www.microsoft.com/windows95/</A>
  74. </PRE>
  75. <PRE>
  76.     <A href="http://www.microsoft.com/windows98/">http://www.microsoft.com/windows98/</A>
  77. </PRE>
  78. <HR>
  79. <H2><A name="What_s_the_equivalent_of_the_she">What's the equivalent of the shebang ("#!")
  80. syntax for Win32?</A></H2>
  81. <P>Unfortunately, Win32 platforms don't provide the shebang syntax, or anything like it. You can try
  82. one of the two following methods to run a script from the command line. If all else fails, you can
  83. always just call the perl interpreter directly, as in <CODE>perl myscript.pl</CODE>.</P>
  84. <P>Although Win32 systems themselves don't use the shebang, the Apache webserver does. If you are
  85. using the Apache webserver on your Win32 system you should put the shebang line at the top of your
  86. CGI scripts.</P>
  87. <P>Your shebang line should look something like:</P>
  88. <PRE>
  89.  #!perl
  90. </PRE>
  91. <P>For Windows NT 4.0, the coolest method is to use associated file types (see <A href="#How_do_I_associate_Perl_scripts_">How
  92. do I associate Perl scripts with perl?</A>). If you've associated Perl scripts with the <EM>.pl</EM>
  93. extension, you can just type the name of your file at the command line and Windows NT will launch <EM>perl.exe</EM>
  94. for you. If you change the <CODE>PATHEXT</CODE> environment variable to include <EM>.pl</EM> files,
  95. like this:</P>
  96. <PRE>
  97.     SET PATHEXT=.pl;%PATHEXT%
  98. </PRE>
  99. <P>you can just type the file name without an extension, and Windows NT will find the first <EM>.pl</EM>
  100. file in your path with that name. You may want to set <CODE>PATHEXT</CODE> in the System control
  101. panel rather than on the command line. Otherwise, you'll have to re-enter it each time the command
  102. prompt window closes.</P>
  103. <P>Given this setup, you can have a Perl script called <EM>cat.pl</EM> that looks like this:</P>
  104. <PRE>
  105.     while ( <> ) {
  106.         print;
  107.     }
  108. </PRE>
  109. <P>and you can invoke it on the command line like this:</P>
  110. <PRE>
  111.     cat myfile.txt
  112. </PRE>
  113. <P>However, you can't invoke it with I/O redirection, like this:</P>
  114. <PRE>
  115.     cat < myfile.txt
  116.     cat myfile.txt | more
  117. </PRE>
  118. <P>although it looks like you should be able to (this is a limitation of Windows NT). Your script
  119. can be in your path or you can provide a path to the file.</P>
  120. <P>Note that the file association method does not work for Windows 95, nor does it work with Windows
  121. NT if you have command extensions disabled. You can, however, still start the Perl script from an
  122. Explorer window if the extension is associated with perl.</P>
  123. <P>Another option is to use the pl2bat utility distributed with ActivePerl to convert your Perl
  124. script into a batch file. What this does is tag some Win32 batch language to the front of your
  125. script so that the system calls the perl interpreter on the file. It's quite a clever piece of batch
  126. coding, actually.</P>
  127. <P>If you call the pl2bat utility on your Perl script <EM>helloworld.pl</EM>, like this:</P>
  128. <PRE>
  129.     C:\> pl2bat helloworld.pl
  130. </PRE>
  131. <P>it will produce a batch file, <EM>helloworld.bat</EM>. You can then invoke the script just like
  132. this:</P>
  133. <PRE>
  134.     C:\> helloworld
  135.     Hello, World!
  136. </PRE>
  137. <P>You can pass command line parameters, as well. Your script can be in your <CODE>PATH</CODE>, or
  138. in another directory, and the pl2bat code will usually find it and execute it correctly. The big
  139. advantage of this over file associations is that I/O redirection will work correctly.</P>
  140. <P>pl2bat has a number of useful command line options to affect how the wrapping is done, what
  141. command line switches to pass to perl, etc. Running <CODE>perldoc pl2bat</CODE> at the command line
  142. will show a full description of these options.</P>
  143. <P>The pl2exe utility is similar to pl2bat, but it puts an executable header on your perl script,
  144. producing an EXE file that cannot be directly edited. Redirection also works correctly under scripts
  145. that have been run through pl2exe.</P>
  146. <HR>
  147. <H2><A name="What_s_the_equivalent_of_chmod_f">What's the equivalent of chmod for Win32?</A></H2>
  148. <P>There is no direct equivalent of the chmod tool on Win32 systems. For file attributes, you can
  149. use the <EM>ATTRIB</EM> command line tool (type <CODE>HELP ATTRIB</CODE> at the command line for
  150. details). For more complex permissions, see <A href="#How_do_I_set_permissions_on_a_fi">How do I set
  151. permissions on a file?</A>.</P>
  152. <P>For information on the <CODE>chmod()</CODE> function, see <A href="../Windows/ActivePerl-Winfaq5.html#How_does_the_chmod_function_work">How
  153. does the chmod function work on Win32 platforms?</A>.</P>
  154. <HR>
  155. <H2><A name="How_do_I_send_email_from_Perl_fo">How do I send email from ActivePerl?</A></H2>
  156. <P>You may come across scripts that send email with an external mail program, as in:</P>
  157. <PRE>
  158.    
  159.         open(MAIL, '| /usr/lib/sendmail user@there.com') or "die";
  160.         print MAIL <<EOF;
  161.         To: user@there.com
  162.         From: user@here.com
  163.         Hello, World!
  164.         EOF
  165. </PRE>
  166. <P>These sort of scripts generally cause people to ask, ``is there a sendmail equivalent on
  167. Windows?'' If you need to send email from a Perl script, there is no need to use an external program
  168. like sendmail. The libnet bundle includes <CODE>Net::SMTP</CODE>, a module that can be used to send
  169. mail. Here is an example:</P>
  170. <PRE>
  171.  
  172.         use Net::SMTP;
  173.  
  174.         $smtp = Net::SMTP->new('here.com'); # connect to an SMTP server
  175.         $smtp->mail( 'user@here.com' );     # use the sender's address here
  176.         $smtp->to('user@there.com');        # recipient's address
  177.         $smtp->data();                      # Start the mail
  178.  
  179.         # Send the header.
  180.         $smtp->datasend("To: user@there.com\n");
  181.         $smtp->datasend("From: user@here.com\n");
  182.         $smtp->datasend("\n");
  183.  
  184.         # Send the body.
  185.         $smtp->datasend("Hello, World!\n");
  186.         $smtp->dataend();                   # Finish sending the mail
  187.         $smtp->quit;                        # Close the SMTP connection
  188. </PRE>
  189. <P>Another alternative is Mail::Sender, which can be used like so:</P>
  190. <PRE>
  191.         use Mail::Sender;
  192.      
  193.         $sender = new Mail::Sender {smtp => 'mail.yourdomain.com', from => 'your@address.com'};
  194.         $sender->MailFile({to => 'some@address.com', subject => 'Here is the file', 
  195.                        msg => "I'm sending you the list you wanted.", 
  196.                            file => 'filename.txt'});
  197. </PRE>
  198. <P>Or Mail::Sendmail, which can be used like this:</P>
  199. <PRE>
  200.         use Mail::Sendmail;
  201.  
  202.         %mail = ( To      => 'you@there.com',
  203.                   From    => 'me@here.com',
  204.                   Message => "This is a minimalistic message"
  205.                  );
  206.  
  207.         if (sendmail %mail) { print "Mail sent OK.\n" }
  208.         else { print "Error sending mail: $Mail::Sendmail::error \n" }
  209. </PRE>
  210. A Perl script for sending mail without using an external program is also available on Robin
  211. Chatterjee's Perl for Win32 page (see <A href="../ActivePerl-faq3.html#Are_there_information_sources_av">Are
  212. there information sources available on ActivePerl on the World Wide Web?</A>).
  213. <P>If you really need a sendmail equivalent for Windows, several such equivalents exist:</P>
  214. <DL>
  215.   <DT><STRONG><A name="item_Blat">Blat</A></STRONG></DT>
  216.   <DD>
  217.     <P>Blat is a public domain program for sending email from the Windows NT command-line. Although
  218.     it is reputed to work under Windows 95, the Blat authors have not tested it under Windows 95.
  219.     The Blat home page is located at <A href="http://gepasi.dbs.aber.ac.uk/softw/Blat.html">http://gepasi.dbs.aber.ac.uk/softw/Blat.html</A></P>
  220.   </DD>
  221.   <DT><STRONG><A name="item_sendmail">sendmail</A></STRONG></DT>
  222.   <DD>
  223.     <P>Microsoft has a port of sendmail available on their FTP site at <A href="ftp://ftp.microsoft.com/developr/drg/unix-to-windows/ports/sendmail/">ftp://ftp.microsoft.com/developr/drg/unix-to-windows/ports/sendmail/</A></P>
  224.     <P>A commercial sendmail product is available from MetaInfo, Inc. An evaluation version is
  225.     available at <A href="http://www.metainfo.com/">http://www.metainfo.com/</A></P>
  226.   </DD>
  227.   <DT><STRONG><A name="item_wrmail">wrmail</A></STRONG></DT>
  228.   <DD>
  229.     <P>Another commercial mail product is wrmail, part of the slmail product from Seattle Labs. A
  230.     free version is available at <A href="http://www.seattlelab.com/">http://www.seattlelab.com/</A></P>
  231.   </DD>
  232. </DL>
  233. <HR>
  234. <H2><A name="How_do_I_schedule_jobs_on_Win32_">How do I schedule jobs on Win32 platforms?</A></H2>
  235. <P>The UNIX cron utility doesn't exist on Win32 platforms.</P>
  236. <P>For Windows NT, a scheduling tool called <CODE>AT</CODE> is available. Unlike the UNIX cron
  237. utility, <CODE>AT</CODE> doesn't store its schedule in a flat file, but is configured using
  238. command-line arguments. Note the AT command seems to be very picky about syntax. Here is one
  239. example:</P>
  240. <PRE>
  241.         at 23:37 /interactive /every:M,T,W,Th,F,S,Su cmd /c "c:\perl\bin\perl.exe c:\test.pl"
  242. </PRE>
  243. <P>If you don't like the command-line version of <CODE>AT</CODE>, there's a GUI version, WinAT,
  244. which is available with the Windows NT Resource Kit. The "Schedule" service must be
  245. running when your job is supposed to happen.</P>
  246. <P>Note that you may have problems when running AT or WinAT if the scheduled program or script
  247. requires any special rights or permissions other than those held by "System" (ie, if it is
  248. working across computers or NT domains). This is because NT does not properly allow you to run
  249. preinstalled NT services, such as the "Schedule" service as a user with network priveleges.
  250. It may <I>look</I> like you can set the scheduler to login as a user with network priveledges, but
  251. the service just does not recognize that user's right's and permissions and the System userid has
  252. only local permissions.</P>
  253. <P>An all-Perl cron-like solution exists at <A href="http://www.megadodo.demon.co.uk/perl/">http://www.megadodo.demon.co.uk/perl/</A>
  254. which uses a familiar Unix-like crontab file. This script can be ran as an NT Service (see <A href="#What_is_a_Windows_NT_service_">How
  255. do I set up a Perl script as an NT Service?</A>). When you create your own NT service, NT lets you
  256. set the useid/password pair, and these services do recognize that userid's rights and permissions.
  257. Hence, the scheduled program or script will have the necessary rights.</P>
  258. <P>There are a few commercial cron-like schedulers. NTcrond, is available from ifdef software: <A href="http://www.ifdef.com/">http://www.ifdef.com/</A>
  259. and AutoTask2000 is available from <A href="http://www.cypressnet.com/">http://www.cypressnet.com/</A>.
  260. These programs <I>should</I> recognize the rights and priveleges of the userid you set their service
  261. to run under to enable the scheduled program or script to have the necessary rights.</P>
  262. <P>For Windows 95, there's a System Agent available with the Microsoft Plus! Pack. Also, there are
  263. several shareware scheduling utilities, notably LaunchPad and Metz Scheduler. These can be found on
  264. a good shareware search engine, such as <A href="http://www.shareware.com/">http://www.shareware.com/</A>.
  265. There is also an optional "Task Scheduler" component with IE4.01 and Windows 98.</P>
  266. <P>Because scheduled jobs on Windows NT run as a service (see <A href="#What_is_a_Windows_NT_service_">What
  267. is a Windows NT service?</A>), you need to take special steps to make sure that files and
  268. environment variables are available to your script.</P>
  269. <P>In some instances, Perl's internal <CODE>sleep</CODE> function might be an appropriate means of
  270. scheduling. For example:</P>
  271. <PRE>
  272.         $seconds = 180;
  273.         sub action;
  274.         while(1) {
  275.                 &action;
  276.                 sleep($seconds);
  277.         }
  278. </PRE>
  279. <P> </P>
  280. <HR>
  281. <H2><A name="Where_can_I_find_Win32_ports_of_">Where can I find Win32 ports of UNIX tools?</A></H2>
  282. <P>You might want to take a look at the help file for Windows NT and Windows 95 commands to see if
  283. there's a rough equivalent distributed with your Win32 platform. If not, try one of these URLs:</P>
  284. <UL>
  285.   <LI>
  286.     <P>GNU-Win32 - a Win32 port of many GNU tools, as well as a complete development environment. <A href="http://www.cygnus.com/misc/gnu-win32/">http://www.cygnus.com/misc/gnu-win32/</A></P>
  287.   </LI>
  288.   <LI>
  289.     <P>Virtually Un*x! - various ports of UNIX programs for Win32. <A href="http://www.itribe.net/virtunix/">http://www.itribe.net/virtunix</A></P>
  290.   </LI>
  291. </UL>
  292. <P>There are also several UNIX-like tools available in the Windows NT Resource Kit. Also, there are
  293. several UNIX-to-Win32 commercial packages available, including the MKS Toolkit from Mortice Kerns
  294. Systems, Inc.: <A href="http://www.mks.com">http://www.mks.com/</A> and Interix from Softway
  295. Systems: <A href="http://www.interix.com/">http://www.interix.com/</A> (the product formerly known
  296. as OpenNT).</P>
  297. <P>You can also check into the Perl Power Tools, being developed under the UNIX Reconstruction
  298. Project. Here you can find UNIX tools that are being reimplemented into all Perl. You can see the
  299. latest at <A href="http://language.perl.com/ppt/">http://language.perl.com/ppt/</A></P>
  300. <HR>
  301. <H2><A name="What_is_a_Windows_NT_service_">What is a Windows NT service?</A></H2>
  302. <P>On Windows NT, a service is a special kind of executable program that runs in the background.
  303. Services are used for programs that are constantly working, such as network protocols or database
  304. servers. Most WWW servers on Windows NT are implemented as services.</P>
  305. <P>A service is different from other programs in several ways:</P>
  306. <UL>
  307.   <LI>
  308.     <P>Services aren't run interactively, although the <CODE>NET START</CODE> and <CODE>NET STOP</CODE>
  309.     commands can be used to start or stop a server. The Services control panel is used to start,
  310.     stop, or pause a service.</P>
  311.   </LI>
  312.   <LI>
  313.     <P>Services don't act with the authority of the logged-in user. That means that services can't
  314.     see user environment variables or read files that are readable only by the logged-in user. You
  315.     can set the account that a service uses in the Services control panel.</P>
  316.   </LI>
  317.   <LI>
  318.     <P>Services run even when no one is logged in to the machine.</P>
  319.   </LI>
  320. </UL>
  321. <P>The most important thing to remember is that you have to take special steps to make resources
  322. available to services. In general, you need to make files available to the Everyone group, and you
  323. have to have environment variables (like <CODE>PATH</CODE>) be system environment variables.</P>
  324. <HR>
  325. <H2><A name="How_do_I_run_a_Perl_script_as">How do I run a Perl script as a Windows NT Service?</A></H2>
  326. <P>You can run your Perl scripts as Windows NT Services via a program called srvany.exe, which comes
  327. with the Windows NT Resource Kit. Once srvany.exe is installed, read the srvany.wri file which
  328. should be with it. This document will explain how to set up registry entries for your new service.</P>
  329. <P>After you are set up, to run your script as a service do:</P>
  330. <PRE>
  331.   x:>srvany perl script.pl
  332. </PRE>
  333. <HR>
  334. <H2><A name="How_do_I_set_permissions_on_a_fi">How do I set permissions on a file?</A></H2>
  335. <P>Win32 platforms don't have the same mechanisms for setting permissions on files as UNIX does. For
  336. files on FAT partitions (which means all files in Windows 95), you don't have to set permissions
  337. explicitly on a file. All files are available to all users.</P>
  338. <P>For files on an NTFS partition on Windows NT, you can set the security permissions on a file
  339. using the Explorer and the properties sheet of the file. Right-click the file in Explorer, and
  340. choose Properties from the drop-down menu. Select the Security tab, and click Permissions to set the
  341. Permissions on the file. Click Help for more information.</P>
  342. <P>A command-line program, <CODE>CACLS</CODE>, will also change the permissions on a file. For more
  343. details, type <CODE>HELP CACLS</CODE> on the command line.</P>
  344. <P>Windows 95/98 machines that are administered using Novell can have accounts and permissions
  345. similiar to NT. However, these permissions must be set up by the Novell administrator.</P>
  346. <HR>
  347. <H2><A name="How_do_I_associate_Perl_scripts_">How do I associate Perl scripts with perl?</A></H2>
  348. <P>On Windows systems, association is the process of specifying which programs should be used for
  349. which kind of files. Files are grouped into file types, such as JPEG files or Perl scripts. The file
  350. type of a file is identified by its file name extension (all the letters after the last ``.'' in the
  351. file name).</P>
  352. <P>So, for example, we can say that there's a type of file called a text file, which has the file
  353. extension <EM>.txt</EM>, and which is handled by the Notepad program.</P>
  354. <P>Usually, ActivePerl programmers create a file type like Perl Script and associate the extension <EM>.pl</EM>
  355. with that type. We specify that the perl interpreter binary, <EM>perl.exe</EM>, is responsible for
  356. that file type. Several Web servers require that you associate your scripts with <EM>perl.exe</EM>
  357. before the script can be run.</P>
  358. <P>On Windows 95 and Windows NT 4.0, you can create a new file type and associate the perl
  359. interpreter with it as follows:</P>
  360. <OL>
  361.   <LI><STRONG><A name="item_"></A></STRONG>
  362.     <P>Open the My Computer icon on the Desktop. The My Computer window should appear.</P>
  363.   </LI>
  364.   <LI>
  365.     <P>From the View menu in the My Computer window, choose Options. The Options dialog box appears.</P>
  366.   </LI>
  367.   <LI>
  368.     <P>In the Options dialog box, select the File Types tab.</P>
  369.   </LI>
  370.   <LI>
  371.     <P>Click the New Type button. The Add New File Type dialog box appears.</P>
  372.   </LI>
  373.   <LI>
  374.     <P>In the ``Description of type'' box, type ``Perl Script''.</P>
  375.   </LI>
  376.   <LI>
  377.     <P>In the ``Associated extension'' box, type ``.pl''.</P>
  378.   </LI>
  379.   <LI>
  380.     <P>Leave the Content Type (MIME) box blank.</P>
  381.   </LI>
  382.   <LI>
  383.     <P>Click the New button beneath the Actions list. The New Action dialog box will appear.</P>
  384.   </LI>
  385.   <LI>
  386.     <P>In the Action box, type ``Open'' (it's important to use this name for the action!).</P>
  387.   </LI>
  388.   <LI>
  389.     <P>In the ``Application used to perform action'' box, type <CODE>[full path to perl]\perl.exe %1
  390.     %*</CODE>, where [full path to perl] is the full path to <EM>perl.exe</EM> on your machine. If
  391.     perl is in your path, you <EM>can</EM> put just <EM>perl.exe</EM>, but for esoteric reasons it's
  392.     better to put the full path. Also, if the path to your interpreter includes spaces (like <EM>C:\Program
  393.     Files\perl5</EM>) put in the DOS path instead (<EM>C:\progra~1\perl5</EM>).</P>
  394.   </LI>
  395.   <LI>
  396.     <P>Click OK to close the New Action dialog box.</P>
  397.   </LI>
  398.   <LI>
  399.     <P>Click OK to close the Add New File Type dialog box.</P>
  400.   </LI>
  401.   <LI>
  402.     <P>Click OK to close the Options dialog box.</P>
  403.   </LI>
  404. </OL>
  405. <P>You can test your association by double-clicking on a perl script in the Explorer window. If <EM>perl.exe</EM>
  406. starts and executes the script, things are OK.</P>
  407. <P>On Windows NT 4.0, you can avoid all the hassle of the above and just type the following from the
  408. command line:</P>
  409. <PRE>
  410.     ASSOC .pl=PerlScript
  411.     FTYPE PerlScript=[full path to perl]\perl.exe %1 %*
  412. </PRE>
  413. <P>For more information on these commands, type <CODE>HELP FTYPE</CODE> at the command prompt.</P>
  414. <P>Note that for this to work you have to have command extensions enabled. (These are enabled by
  415. default; you'd know if you'd turned them off.)</P>
  416. <HR>
  417. <H2><A name="perl_dash_e">Why doesn't 'perl -e' work?</A></H2>
  418. <BR>
  419. <BR>
  420. <P>It does - it's just that some command shells (for example COMMAND.COM, CMD.EXE and 4DOS) don't
  421. accept single quotes wrapped around command arguments.</P>
  422. <P>The safest way to do perl one-liners is to wrap the parameters within ""
  423. (double-quotes) the use q() and qq() inside the parameters. q() and qq() with put whatever is inside
  424. them between single-quotes or double-quotes, respectively.<BR>
  425. For example:</P>
  426. <BLOCKQUOTE>
  427.   <P><CODE>perl -e "use LWP::Simple; while(@c = head <>) { $c = join qq(\n\t), @c; print
  428.   qq(Header info:\n\t$c\n); }"</CODE></P>
  429. </BLOCKQUOTE>
  430. <P>(this was all one line)<BR>
  431. Run this from the command line and type in the URL to your favorite website, like <A href="http://www.perl.com/">http://www.perl.com/</A>...</P>
  432. <P>The <A href="../../lib/Pod/perlwin32.html">perlwin32</A> and <A href="../../lib/Pod/perlrun.html">perlrun</A>
  433. POD pages have more information on using the command line.</P>
  434. <HR>
  435. <H2><A name="What_editors_are_available_for_Windows">What editors are available for Windows?</A></H2>
  436. <P>Windows comes with two editors that are great for editing Perl, NotePad and WordPad. But, if you
  437. need more features for ease of editing, here is a list of free and commercial editors:</P>
  438. <UL>
  439.   <LI><B>BBEdit</B> - <A href="http://www.barebones.com/">http://www.barebones.com/</A>
  440.     <UL>
  441.       <LI>A Macintosh editor that supports multiple languages including Perl. By adding Brad
  442.         Hanson's BBEdit Plug-Ins you can run your Perl scripts right in BBEdit</LI>
  443.     </UL>
  444.     <P> </P>
  445.   </LI>
  446.   <LI><B>CodeWright</B> - <A href="http://www.premia.com/">http://www.premia.com/</A>
  447.     <UL>
  448.       <LI>With Codewright, you choose the compiler, the assembler, the version control system--any
  449.         tools you like--and Codewright works with you. Includes Perl language support.</LI>
  450.     </UL>
  451.     <P> </P>
  452.   </LI>
  453.   <LI><B>ED for Windows</B> - <A href="http://www.getsoft.com/">http://www.getsoft.com/</A>
  454.     <UL>
  455.       <LI>ED leads the way in intelligent language sensitive editing. Supporting both DOS and
  456.         Windows, ED is as easy to use as it is to spell. Up and running straight out of the box for
  457.         the new user but highly configurable, ED fits the way YOU want to work. Includes support for
  458.         Perl syntax highlighting.</LI>
  459.     </UL>
  460.     <P> </P>
  461.   </LI>
  462.   <LI><B>GNU Emacs for Windows</B> - <A href="http://www.cs.washington.edu/homes/voelker/ntemacs.html">http://www.cs.washington.edu/homes/voelker/ntemacs.html</A>
  463.     <UL>
  464.       <LI>"Emacs is the extensible, customizable, self-documenting real-time display
  465.         editor."</LI>
  466.     </UL>
  467.     <P> </P>
  468.   </LI>
  469.   <LI><B>HomeSite</B> - <A href="http://www.allaire.com/">http://www.allaire.com</A>
  470.     <UL>
  471.       <LI>HomeSite 4.0 is the award-winning HTML editing tool that lets you build great Web sites in
  472.         less time, while maintaining Pure HTML. Good editor for ASP, and PerlScript.</LI>
  473.     </UL>
  474.     <P> </P>
  475.   </LI>
  476.   <LI><B>MultiEdit</B> - <A href="http://www.amcyber.com/">http://www.amcyber.com/</A>
  477.     <UL>
  478.       <LI>MultiEdit is an multiple language editor. Perl language support includes - smart
  479.         indenting, template editing, construct matching, code completion, context highlighting,
  480.         brace/parenthesis alignment and line-numbering. Other MulitEdit features include multiple
  481.         file search/replace, HTML and ASP support, web site management, integration with several
  482.         IDEs and debuggers, and the ability to compare and sychronize files while editing.</LI>
  483.     </UL>
  484.     <P> </P>
  485.   </LI>
  486.   <LI><B>NoteTab</B> - <A href="http://www.notetab.com/">http://www.notetab.com</A>
  487.     <UL>
  488.       <LI>Seamless support for Perl and Gawk scripts (only commercial versions).</LI>
  489.     </UL>
  490.     <P> </P>
  491.   </LI>
  492.   <LI><B>Perl Builder</B> - <A href="http://www.solutionsoft.com/perl.htm">http://www.solutionsoft.com/perl.htm</A>
  493.     <UL>
  494.       <LI>Perl Builder is a complete, integrated development environment (IDE) for Perl. Whether you
  495.         are an experienced Perl developer or a non-programmer who needs to create Perl CGI scripts,
  496.         Perl Builder's visual tools are guaranteed to dramatically improve your productivity! Perl
  497.         Builder is a 32-bit application and requires Windows 95 or NT.</LI>
  498.     </UL>
  499.     <P> </P>
  500.   </LI>
  501.   <LI><B>Perl Scripting Tool</B> -
  502.     <UL>
  503.       <LI>PST was intended as a replacement for Windows' Notepad, which until now has been the
  504.         editor of choice for Win32 PERL Programmers. While Notepad is usually sufficient there has
  505.         long been the need for something with 'just a little more'. This simple editor is Notepad
  506.         with a few extra options for PERL script authoring, including a subroutine library, code
  507.         wizard, run, debug, syntax check, floating toolbox and more. An extremely simple and
  508.         straight-forward PERL GUI.</LI>
  509.     </UL>
  510.     <P> </P>
  511.   </LI>
  512.   <LI><B>Programmer's File Editor (PFE)</B> - <A href="http://www.lancs.ac.uk/people/cpaap/pfe/">http://www.lancs.ac.uk/people/cpaap/pfe/</A>
  513.     <UL>
  514.       <LI>PFE is a large-capacity, multi-file editor that runs on Windows 98, Windows 95, Windows NT
  515.         4.0 and Windows 2000 on Intel-compatible processors, and on Windows 3.1x. Although it's
  516.         primarily oriented towards program developers and contains features like the ability to run
  517.         compilers and development applications, it also makes a very good general purpose editor for
  518.         any function at all.</LI>
  519.     </UL>
  520.     <P> </P>
  521.   </LI>
  522.   <LI><B>TextPad</B> - <A href="http://www.textpad.com/">http://www.textpad.com</A>
  523.     <UL>
  524.       <LI>TextPad is a fully featured text editor for Windows. 16 and 32 bit editions available.</LI>
  525.     </UL>
  526.     <P> </P>
  527.   </LI>
  528.   <LI><B>UltraEdit</B> - <A href="http://www.ultraedit.com/">http://www.ultraedit.com/</A>
  529.     <UL>
  530.       <LI>UltraEdit is a disk based editor with a 16-Bit version for Windows 3.x and a 32-Bit
  531.         version for Windows NT and Windows 95 (not Win32s). It includes bazillions of features
  532.         including a Perl wordfile for Perl syntax highlighting.</LI>
  533.     </UL>
  534.     <P> </P>
  535.   </LI>
  536.   <LI><B>VIM</B> - <A href="http://www.vim.org/">http://www.vim.org</A>
  537.     <UL>
  538.       <LI>The "Vi IMproved" editor -- Now with Perl support. VIM provides Perl syntax
  539.         highlighting, and a Perl interface. The Perl interface provides the ability to run a Perl
  540.         command or run a Perl command for each line in a range. For more information on Perl
  541.         support, see the Perl and VIM help page.</LI>
  542.     </UL>
  543.     <P> </P>
  544.   </LI>
  545.   <LI><B>VisualSlickEdit</B> - <A href="http://www.slickedit.com/">http://www.slickedit.com</A>
  546.     <UL>
  547.       <LI>Visual SlickEdit combines the richest set of powerful editing features with more
  548.         configurability than any software product in any category. Visual SlickEdit is
  549.         multi-platform, highly extensible, and fast -- Includes language color-coding extention for
  550.         Perl.</LI>
  551.     </UL>
  552.     <P> </P>
  553.   </LI>
  554.   <LI><B>WinEdit</B> - <A href="http://www.windowware.com/winware/winedit.html">http://www.windowware.com/winware/winedit.html</A>
  555.     <P> </P>
  556.   </LI>
  557. </UL>
  558. <HR>
  559. <H1><A name="AUTHOR_AND_COPYRIGHT">AUTHOR AND COPYRIGHT</A></H1>
  560. <P>This FAQ was originally assembled and maintained by Evangelo Prodromou. It has been revised and
  561. updated by Brian Jepson of O'Reilly and Associates, and David Grove, David Dmytryshyn of
  562. ActiveState, Kevin Meltzer, Eric Smith and David Sparks of ActiveState.</P>
  563. <P>This FAQ is in the public domain. If you use it, however, please ensure that you give credit to
  564. the original authors.</P>
  565. <TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
  566.   <TR>
  567.     <TD class="block" valign="MIDDLE" width="100%" bgcolor="#cccccc"><STRONG>
  568.       <P class="block"> ActivePerl FAQ</P>
  569.       </STRONG></TD>
  570.   </TR>
  571. </TABLE>
  572.  
  573. </BODY>
  574.  
  575. </HTML>
  576.