Language Comparisons
In this chapter, we have seen that Perl offers namespace partitioning, limited access protection, reflection, run-time subroutine loading (autoloading), package initialization and destruction constructs, and exportation of names to different namespaces. Let’s look at some other languages with these features in mind.
Tcl
Tcl’s “package” feature basically provides a way to annotate a set of code with a version number and for the user of that code to explicitly state the version it requires. Tcl flags an error if there’s a mismatch. Perl supports version numbers also (more on this in the next chapter).
Packages don’t act like global namespaces as they do in Perl.
Instead, Tcl supports the concept of multiple interpreters coexisting
in the same program to provide completely distinct namespaces. This
facility is used to create SafeTcl
, which offers
secure and insecure compartments in which to evaluate code.
Perl’s Safe
package uses a completely
different mechanism internally (neither packages nor multiple
interpreters), as we shall see in Chapter 20.
For reflection, Tcl has an “info” command for finding out about global symbols. It has no inheritance feature, but several free extensions such as [incr Tcl ] and stoop attempt to fill the gap by providing an object orientation layer over the basic language.
Dynamic function calls are common and trivial to implement; just specify the name of a command as a variable, and it will get interpolated and executed at run time. ...
Get Advanced Perl Programming now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.