Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: moving from mac to PC

by afoken (Chancellor)
on Oct 28, 2016 at 06:27 UTC ( [id://1174873]=note: print w/replies, xml ) Need Help??


in reply to Re^2: moving from mac to PC
in thread moving from mac to PC

... use slashes, not backslashes. WIN understand both ...

... except on the command line or with respect to anything handled by the command line interpreter

The only real problem is the command interpreter. But if you use the command interpreter, your code is already far from being portable.

How external programs handle command line arguments depends on the individual program. Most programs with a DOS legacy treat the forward slash as switch introducing character, as do many programs written for Windows. But programs from other platforms have no problems with forward slashes in file names on the command line.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Replies are listed 'Best First'.
Re^4: moving from mac to PC -- win internal commands
by Discipulus (Canon) on Oct 28, 2016 at 07:25 UTC
    I suspect that this is related to internal commands infact when you say individual program i suspect that internal commands do not like slashes, while all other ones accept both slashes and backslashes.

    See ss64.com where internal commands have a dot after the name.

    Given that dir and type are internal commands and ls (UnxUtils version) and icacls are not, you can see the difference:

    # dir not OK perl -wMstrict -le "my $path = 'c:/scripts/resized';my @dirs = `dir $p +ath`;print qq(@dirs)" Formato del parametro non corretto - "scripts". # ls OK perl -wMstrict -le "my $path = 'c:/scripts/resized';my @dirs = `ls $pa +th`;print qq(@dirs)" # OK long output omitted #type not OK perl -wMstrict -le "my $path = 'c:/scripts/resized/zen-small.pl';my @d +irs = `type $path`; print qq(@dirs)" c:/scripts/resized/zen-small.pl not found # icacls OK perl -wMstrict -le "my $path = 'c:/scripts/resized';my @dirs = `icacls + $path`;print @dirs" c:/scripts/resized BUILTIN\Administrators:(I)(F) BUILTIN\Administrators:(I)(OI)(CI)(IO)(F) NT AUTHORITY\SYSTEM:(I)(F) NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F) BUILTIN\Users:(I)(OI)(CI)(RX) NT AUTHORITY\Authenticated Users:(I)(M) NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M) Elaborazione completata per 1 file. Elaborazione non riuscita per 0 fi +le

    is fun also to see different languages for errors issued (italian coming from the OS and english).

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
      I suspect that this is related to internal commands infact when you say individual program i suspect that internal commands do not like slashes, while all other ones accept both slashes and backslashes.

      Actually, some MSWindows-centric programs also don't accept / in file paths. For example, last time I used Beyond Compare's CLI, it choked on / even when it was a path like "c:/path/to/file.ext".

      BTW, in MS-DOS, there was system call to change the "option switch" character. I don't remember what it was, but back when I had to use Win95, one of my mentors told me about it. Made the Win95 experience tolerable for me. Later, I discovered Cygwin.

        in MS-DOS, there was system call to change the "option switch" character. I don't remember what it was

        API: int 0x21, ax=0x3700 = Get Switch Character, int 0x21, ax=0x3701 = Set Switch Character. Both available since MS-DOS 2.0, ignored since MS-DOS 4.01, changed to always return "/" since MS-DOS 5, DR-DOS 3.41 to 6.0.

        Anchient DOS versions (MS DOS 2.x and some OEM versions) allowed setting the switch character in config.sys by setting SWITCHAR=x.

        So yes, you could change the switch character (before MS-DOS 5), but most programs ignored it, and for those few which followed it, you had to rewrite batch files to use your switch character instead of the standard "/". Update to MS-DOS 5.0 would require another rewrite back to "/".

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1174873]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2024-04-25 20:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found