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. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access