http://qs321.pair.com?node_id=895458


in reply to Re: Is undef list assignment a no-op?
in thread Is undef list assignment a no-op?

It is more normal just to shift it out and normal ways are more maintainable.

I can respect that it isn't a style you feel comfortable with or are familiar with, but I wouldn't go so far as to call it unusual or abnormal.

For one, using undef as a placeholder in a list on the left hand of an assignment is a perfectly valid use of Perl syntax. No less than Larry Wall documents its usage in the book Programming Perl (p. 819). Lest one relegate this to some ancient deprecated version of Perl, this usage is also documented even today in undef.

For another, the use of undef in a list preserves the order of parameters without all the visual noise created by shift statements. One might argue that is is more self-documenting and hence more maintainable.

Finally, and this is probably most important, shifting parameters out of @_ can make debugging more difficult. If you die and need a stack trace, the shifted out parameters will sometimes display as "undef" being passed to your function call, even though the actual value passed into the function call was absolutely not undef.