http://www.perlmonks.org?node_id=43318


in reply to Apparent Inconsistencies in Perl Function Naming

I think you're right about the length() function. People are surprised all the time when length() fails to work on arrays.

Nat Torkington put in a proposal for Perl 6 that suggests that length(@array) be made to work properly instead of its bizarre current behavior, so you're certainly not the only person to have thought of this. I don't know whether Larry will decide to change it, however.

As for the slicing issue, it's tempting to ask that the positions in a string should be accessed by index as if the string were an array. You can do this in some other languages like C and Pascal where a string is an array. But it's hard to see how to arrange it in Perl, for syntactic reasons if nothing else. (Also, in Perl, a string is not an array.)

But if your suggestion were followed, it would still be inconsistent. @array[3..5] produces a list of three items. But presumably you want your string-slice to produce a single string, not a list. Then in your alternate universe, PawnPrince comes along and asks why the slice notation sometimes produces a list and sometimes an string, and why it isn't consistent. So it's not clear that there's any benefit from your suggestion anyway.