Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Does #!perl -na -F/,/ work on Win NT?

by bsb (Priest)
on Jul 26, 2002 at 00:56 UTC ( #185393=categorized question: print w/replies, xml ) Need Help??
Contributed by bsb on Jul 26, 2002 at 00:56 UTC
Q&A  > programs and processes


Under Win NT using cmd.exe as the shell:
On the command line -F works fine >perl -naF, -e "print @F" all_data.txt >perl -naF/,/ -e "print @F" all_data.txt >perl -naF',' -e "print @F" all_data.txt >perl -naF"," -e "print @F" all_data.txt But in a shebang line in a file I can't find a way to have the switch processed: #!/usr/bin/perl -na -F, print @F; > all_data.txt ... not split, $F[0] eq $_ With -F/,/ or -F"," or -F',' I get: > all_data.txt syntax error at E:\gust\ line 2, near "print"
Any ideas?

Answer: Does #!perl -na -F/,/ work on Win NT?
contributed by BrowserUk

Unfortunately, CMD.EXE does use the shebang line in your perl script. The Win32 mechanism for knowing which executable to use to process a given file is quite different. Being ASSOC and FTYPE; On my system these are set as follows:

C:\test>assoc .pl .pl=perl_script C:\test>ftype perl_script perl_script=e:\perl\bin\perl.exe -w %1 %*

Use HELP ASSOC|FTYPE for fulll definition of these commmands.

You will notice that I have modifes the ftype line and added the -w before any passed args. You could modify this on your system to have the -naF switches, but this would then be used for all Perl scripts run on that system which isn't very useful.

The second and probably best alternative is to use the ActiveSystems (assuming your using AS) supplied pl2bat command on your script, and the edit the top of it to have the switches you want.

Example: (additions in bold):

@rem = '--*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" -na -F %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl :WinNT
perl -x -S %0 -na -F %*

if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel% == 9009 echo You do not have Perl in your PATH. if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul goto endofperl @rem '; #!perl #line 15

For further information for ActiveState installations read the AS docs at: A/S docs

(The above link assumes AS perl istalled in the default directories on your C: drive. Adjust as necessary on the addressline of your browser.

Edited bits per authors req. - dvergin 2002-07-29

Please (register and) log in if you wish to add an answer

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others cooling their heels in the Monastery: (3)
    As of 2020-10-30 02:44 GMT
    Find Nodes?
      Voting Booth?
      My favourite web site is:

      Results (277 votes). Check out past polls.