A coworker is trying to use ack (a Perl program) on his Windows machine, having tried it under Linux and decided he definitely wants to use it. He managed to get Strawberry Perl installed on his machine, but can't seem to figure out what to do to make ack run with it from a command prompt. He tried editing the #! line, but I knew that wouldn't work. I'm pretty sure Strawberry perl is in his PATH.
What do you need to do to run a general Perl program in your PATH on Windows using Strawberry?
Update: I'm seeing some information online about the PATHEXT variable, but not enough.
Another solution is to create ack.exe with PAR::Packer - he would not need Strawberry at all.
First, be careful that the program is in the
Path
, not justperl.exe
. The Perl binaries and core programs usually end up in<installdir>\bin
, but others may end up in the site specific directory<installdir>\site\bin
. The commandmight aid your search. Make sure your
Path
reflects your setup.There are two common ways, at least that I know of, to run a Perl program from the Windows Command Prompt.
The first is to create a batch version of the program with pl2bat, which will execute
perl
with the program. Installed programs usually do this automatically becauseMakeMaker
andModule::Build
take care of this.The second is to create a
.pl
file association. This is done by creating the registry keyHKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command
(orHKEY_CURRENT_USER
if it's for the current user only) and set the(Default)
value toThat way, you can call programs just by naming them with the
.pl
extension. Now you can invoke the program withprogram.pl
.You may have noticed that you can call a program on Windows without the extension. The program is searched for in the
Path
, but when there's no extension,PATHEXT
is used to complete the name. Append.pl
to the list, and you can invoke the program just withprogram
. Note that the order in this list is important for the search, just as the order inPath
matters.Installers usually take care of the last two steps, but this knowledge is useful if you'd like to add your own or need to fix it.
I haven't had a problem just installing ack and running it from the command line.
Is Strawberry Perl installed correctly? Can you run "perl" from cmd.exe?
Did App::Ack installed correctly?
If so, I don't see why you can't run "ack" from the command line:
If it isn't working, where in that chain are things broken? For example, if you can't run "perl" from the command line, then Strawberry didn't install correctly (or isn't in your PATH) and you'll need to fix that. But otherwise, ack gets installed with an "ack.bat" wrapper into the same path as "perl", so if you can run "perl" you should be able to run "ack".
If he's followed the directions in this blog post, he should be alright. I haven't had to install Strawberry Perl for a while now, but IIRC, after I installed it I was able to use it just like I would if I were on a linux box. (e.g.
perl yourscripthere.pl
)