What's the difference between deep and shallow binding?
In deep binding, lexical variables mentioned in anonymous subroutines are the
same ones that were in scope when the subroutine was created. In shallow
binding, they are whichever variables with the same names happen to be in scope
when the subroutine is called. Perl always uses deep binding of lexical
variables (i.e., those created with my()). However, dynamic
variables (aka global, local, or package variables) are effectively shallowly
bound. Consider this just one more reason not to use them.
This is wrong. Deep binding vs shallow binding is an implementation choice for variable binding, not a semantic difference. Both dynamic scoping and lexical scoping can use deep or shallow binding. (If this comment was disrespectful, please report it.)
Add Your Feedback
Your feedback will be posted below and an email sent to
the author. Please remember that the author was kind enough to
share this with you, so any criticisms must be stated politely, or they
will be deleted. (For feedback not related to this particular article, please
click here instead.)