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.