I don't use
$# much myself, as evaluating the array in scalar context gets the length just fine, and negative values are allowed as subscripts. (I don't believe I've ever used [$[].)I suppose if you really needed to write a C-style loop and index into the array, it would come in handy, but I've not seen the need in a long time.
Generally, operators such as shift, pop, push and unshift do the job for me, while foreach (@array) takes care of the rest.