Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

command line parameters / file associations

Jun
3
0
I just upgraded from TCMD9 to TCMD12 and I'm seeing some different functionality when running a Perl script from the command line.

I have a Windows file association that links perl.exe with the file extension ".pl"

I am getting different TCMD functionality when:
1) I rely on the ".pl" file association to start Perl; AND
2) I pass parameters to the Perl script.

The Perl script test_argv.pl is just 1 line:
print "argv[0]: $ARGV[0]\n";

In TCMD12:
[w:\]test_argv.pl robert
argv[0]:

[w:\]perl test_argv.pl robert
argv[0]: robert

In TCMD9:
[w:\]test_argv.pl robert
argv[0]: robert

I prefer the functionality of TCMD9.

The TCMD12 functionality is problematic because I have many batch files that just call the perl script without specifically calling perl.exe.

Is there an option I haven't set properly in TCMD12?
 
From: rsternlieb
| I just upgraded from TCMD9 to TCMD12 and I'm seeing some different
| functionality when running a Perl script from the command line.
|
| I have a Windows file association that links perl.exe with the file
| extension ".pl"

You should display both the file association (which associates an extension to a "filetype"; multiple extensions can be associated with the same filetype), AND the command to process the "filetype". You can use the ASSOC command for the first, and the FTYPE command for the second. A frequent problem with FTYPE is that (unlike TCC's executable extensions) it is necessary to indicate that command line parameters specified in TCC must be passed on to the target program's command line explicitly, e.g. as "%1" %*.

Did you be any chance set .PL as an executable extension in V9 but not in V12? Type "which x.pl" (where x.pl is a file) to see how it is interpreted by TCC (TCMD).
--
Steve
 
From: rsternlieb
| I just upgraded from TCMD9 to TCMD12 and I'm seeing some different
| functionality when running a Perl script from the command line.
|
| I have a Windows file association that links perl.exe with the file
| extension ".pl"

You should display both the file association (which associates an extension to a "filetype"; multiple extensions can be associated with the same filetype), AND the command to process the "filetype". You can use the ASSOC command for the first, and the FTYPE command for the second. A frequent problem with FTYPE is that (unlike TCC's executable extensions) it is necessary to indicate that command line parameters specified in TCC must be passed on to the target program's command line explicitly, e.g. as "%1" %*.

Did you be any chance set .PL as an executable extension in V9 but not in V12? Type "which x.pl" (where x.pl is a file) to see how it is interpreted by TCC (TCMD).
--
Steve

Thanks Steve.
TCC9 and TCC12 give identical results for assoc x.pl, ftype x.pl, and which x.pl:
[w:\]assoc test_argv.pl
TCC: File association not found for extension "test_argv.pl"

[w:\]ftype test_argv.pl
TCC: File type not found or no open command associated with "test_argv.pl"

[w:\]which test_argv.pl
test_argv.pl is associated with : C:\Program Files\Perl\bin\perl.exe
The path is the same for both TCMD versions.
The environment variables (set > tcmdxx.txt) are the same for both TCMD versions.

----
Rob
 
Try

assoc .pl

Hi David.
Well, that is slightly embarrassing. I should have caught that.
Both TCC9 and TCC12 have ".pl=Perl"


- - - - - - - - - - - - - - -
Here are two new things that may lead to a resolution.

a)
I created a new "die.pl" perl script. The contents of the script is simply "die;" (without the quotes).

When I run "die.pl" from the TCC9 command prompt I get:
[w:\]die.pl
Died at W:\die.pl line 1.

When I run "die.pl" from the TCC12 command prompt I get a Windows GUI Error box that says:
PerlScript Error
[Line:0] (in cleanup) Died

When I run "perl die.pl" from either TCC9 or TCC12 I get:
[w:\]perl die.pl
Died at W:\die.pl line 1.

- - - - - - - - - -
b)
There is a $^X Special Variable in Perl that returns (From Programming Perl 2nd) "The name that the Perl binary itself was executed as, from C's argv[0]" and this gives different results in TCC9 vs. TCC12.

With the contents of env.pl being only 'print ">>$^X\n<<";':


Results from TCC9:
[w:\]env.pl
>>TCC<<
Results from TCC12:
[w:\]env.pl
>>C:\progra~1\Perl\bin\PerlSE.dll<<

When running 'perl env.pl' from either TCC9 or TCC12 the results are the same:
[w:\]perl env.pl
>>F:\perl\bin\perl.exe<<
So, there are definite differences.
-----
Rob
 

Similar threads

Back
Top