|XP is just a number|
Right! Before we get into a harranging match, I don't think that you studied the program output from my last post properly. If you did, then we are simply agreeing, but do not know it yet :).
The point I was making, was that on Win32, I never get any indication that your snippet crashes on my machine. Nothing. Zip. Nada. Not a jot:)
So, by your description of "crash", I assumed you were getting some indication on your system that Perl had crashed--such as the "core dumped" message.
If you are not getting this message, then your characterisation of this as a "crash" maybe accurate, in as much as Perl is certainly taking an abnormal path to completetion, but I usually associate the term "crash" with something the OS becomes aware of and reports, rather than (as now seems a possible interpretation of your use of that term) an internal to perl, "bottle out of here cos we're confused and don't bother telling the user anything" behaviour that I am seeing.
To put that more clearly, calling substr in a lvalue context, with parameters that lie entirely outside the target string, causes a fatal-but-silent termination of the Perl process.
If this is the behaviour that you are seeing under HP/UX, then I agree it is most definitely worthy of the term "Perl oddity", and I apologies for my having misunderstood you.
It does not however, cause what I would term a "crash", at least on my system. :)
So, are we agreeing; disagreeing; agreeing to disagree or disagreeing to agree?
I'd like to achieve the former but I would settle for the second to last, but I think I have acquired a reputation for tending to the latter--though, of course, I disagree with that assessment :)
Examine what is said, not who speaks.
Silence betokens consent.
Love the truth but pardon error.