Well, you see, Perl's length is only for strings and if you want the length of an array, you use @arrayname itself in scalar context.
Now, length happens to provide scalar context to its right hand side, so @arrayname already returns the required length. Unfortunately, at that point it hasn't been processed by length yet, and length requires a string. And so, the length of the array is coerced to be a string and then the length of that string is returned.
A case of "don't order fries if your meal already comes with them or you'll end up with too many fries".