1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

command line parameters / file associations

Discussion in 'Support' started by rsternlieb, Jun 6, 2011.

  1. rsternlieb

    Joined:
    Jun 6, 2011
    Messages:
    3
    Likes Received:
    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?
     
  2. Steve Fabian

    Joined:
    May 20, 2008
    Messages:
    3,523
    Likes Received:
    4
    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
     
  3. rsternlieb

    Joined:
    Jun 6, 2011
    Messages:
    3
    Likes Received:
    0
    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
     
  4. David Marcus

    Joined:
    Jun 4, 2008
    Messages:
    647
    Likes Received:
    1

    Try

    assoc .pl​
     
  5. rsternlieb

    Joined:
    Jun 6, 2011
    Messages:
    3
    Likes Received:
    0
    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
     

Share This Page