views:

69

answers:

3

Hello

I am trying to find a way to register the files with extension .pl as executables. I spent some time on the web looking for a solution, but I couldn't find anything.

What I can do: I made a script, let's call it myscript.pl I can run it like this :

perl myscript.pl [my script parameters]

Now since the file is associated with perl, I can also run it as:

myscript.pl [my script parameters]

Now I know that there is somewhere a list of extensions that are considered as executables (.exe, .bat, etc…). I would like to add .pl to this list so that I can run my script like this:

myscript [my script parameters]

Does anyone know how to do this?

Thanks,

Pascal

+9  A: 

Yes, there is built-in support for this. If you check the help for command FTYPE you will see a perl example.

C:>help ftype

Displays or modifies file types used in file extension associations

FTYPE [fileType[=[openCommandString]]]

fileType Specifies the file type to examine or change openCommandString Specifies the open command to use when launching files of this type.

Type FTYPE without parameters to display the current file types that have open command strings defined. FTYPE is invoked with just a file type, it displays the current open command string for that file type. Specify nothing for the open command string and the FTYPE command will delete the open command string for the file type. Within an open command string %0 or %1 are substituted with the file name being launched through the assocation. %* gets all the parameters and %2 gets the 1st parameter, %3 the second, etc. %~n gets all the remaining parameters starting with the nth parameter, where n may be between 2 and 9, inclusive. For example:

ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe %1 %*

would allow you to invoke a Perl script as follows:

script.pl 1 2 3

If you want to eliminate the need to type the extensions, then do the following:

set PATHEXT=.pl;%PATHEXT%

and the script could be invoked as follows:

script 1 2 3
Ed Guiness
What version of Microsoft operating systems has this new feature?
PP
It's been around since NT, maybe even earlier.
Ed Guiness
Hello! Thanks for your reply. I tried but for some reason it didn't survive reboot. Probably I have to find the right config file which is called at boot time.
Pascal
This will survive reboot if you permanently change PATHEXT as described.
Ed Guiness
A: 

Your best approach would be to write a batch file called myscript.bat, place it in your path, and have it run your script.. e.g.

@echo off
c:\perl\bin\perl.exe c:\scripts\myscript.pl %*
PP
If you want to make a batch "wrapper" for a Perl script, use the `pl2bat` utility that comes with perl.
Michael Carman
Hello! Thanks for your reply. The problem if I use this method is that I have to make a batch for every script I write...
Pascal
+5  A: 

You can simply add ";.PL" to the PATHEXT environment variable. Right-click "My computer" > Properties > Advanced > Environment variables > System variables.

AndiDog
Hello! Thanks for your reply! Yes, that's exactly what I was looking for.
Pascal