Stewart Anderson wrote: >> From: mrstevegross [mailto:[EMAIL PROTECTED] >> >> I have a package named "Foo" in which I want to define some package- >> level constants (such as $VAR="soemval"). I want those constants >> available to users of package Foo, so the following code would work: >> >> === foo.pl === >> package foo; >> use constant VAR => "someval"; >> >> === bar.pl === >> use foo; >> print $foo::VAR; >> >> It doesn't appear to be working; it compiles ok, but it prints >> nothing. I thought it would print "someval". >> > That looks interesting. How do people use that kind of constant > assignment. I can see uses for it, but would be interested to hear what > others use this technique for.
Take a look at perldoc constant What the pragma creates is a prototyped subroutine with exactly zero parameters, so writing use constant PI => 3.14159265359; is equivalent to a subroutine sub PI() { 3.14159265359; } However it has a few of advantages over just writing this directly: - It is self-documenting, i.e. it is clear that a named constant is being defined. - The Perl compiler has a chance to optimise out the subroutine definition and call - The implementation could change to something more optimal in the future without needing to alter any code that uses the pragma I hope this helps, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/