letting program changes persist just seems like a recipe for disaster.

Hm. Maybe I gave a false impression? They only persist, for that instance of the shell, and only until that shell instance terminates. And by that judgement, isn't the following also a potentially disasterous recipe?

c:\test>perl -de1 Loading DB routines from perl5db.pl version 1.3 Editor support available. Enter h or `h h' for help, or `perldoc perldebug' for more help. main::(-e:1): 1 DB<1> $x = 12345 DB<2> print $x 12345 DB<3>

Because replace DB<1> with c:\test> and it is exactly analogous. And in any case, the behaviour is easily altered to your preferred option:

C:\test>path PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\T... C:\test>cmd /c "set path=a load of junk here && path" PATH=a load of junk here C:\test>path PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\T...

Or when invoking a bat file you can avoid it changing the current shell instance by explicitly starting a new instance of the shell to run it as in:

C:\test>type junk.bat set test=this is the value set inside the .bat file c:\test>start /b junk.bat c:\test>set test=this is the value set inside the .bat file c:\test>set test Environment variable test not defined

So either behaviour is easily available. And here's yet another way to choose the required behaviour:

c:\test>type junk.bat set test1=this persists setlocal set test2=this does not persist endlocal set test3=and this persists also c:\test>set | find "test" c:\test>junk c:\test>set test1=this persists c:\test>setlocal c:\test>set test2=this does not persist c:\test>endlocal c:\test>set test3=and this persists also c:\test>set | find "test" test1=this persists test3=and this persists also

We could argue till we are blue in the face about which is the correct behaviour, but the reality is that these are two different systems with two different 'default' behaviours. So assuming that they are the same, or complaining that they are not is futile.

I could also argue that the Win32 behaviour is more flexible because it gives you the choice, and that there are some very definite uses for it's default behaviour. But I'm guessing you probably won't read down this far, and they would fall on deaf ears even if you do.

And that in a nutshell is my major problem with efforts like cygwin and Strawberry Perl.

The attempt is to make win32 look and behave like *nix so that *nix people are more comfortable and can pretend that they do not sully themselves. But in that attempt, they create more problems than they resolve. And, by the by, throw away the potential for some really good stuff.

Just as it is unlikely that I could ever get up to speed on *nix to rival the hardcore *nix Perl developers. It is, with rare exception, unreasonable to expect that many of them will get up to speed on win32 development sufficiently to exploit the full potential of Perl on Win32. The only solution I see is for pairs of people to get together from both sides to drive things forward to successfully exploit the potential from both sides. But that requires feedback.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

In reply to Re^7: Avoid headaches from Strawberry Perl 5.10.0 and binary SVK by BrowserUk
in thread Avoid headaches from Strawberry Perl 5.10.0 and binary SVK by xdg

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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, details, 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, summary, 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.