in reply to Re: Re: Some suggestions on coding style - a chance to critique
in thread Some suggestions on coding style - a chance to critique

True. For a standalone script, it's always nice to see some globally used parameters at the top for easy customization/configuration.

I do the follwing in such cases...

If the variables are "configuration" type of variables, I would use constants, not plain scalars. I feel much better in knowing that most ( if not all ) of the globally accessible variables would be visually different from other local variables:

#!perl use constant LOG_DIRECTORY => '/foo/bar/baz'; use constant SOME_URL => 'http://baboon.com'; main(); sub main { .... some_random_function( LOG_DIRECTORY, $local_variable ); }
  • Comment on Re: Re: Re: Some suggestions on coding style - a chance to critique
  • Download Code

Replies are listed 'Best First'.
Re4: Some suggestions on coding style - a chance to critique
by dragonchild (Archbishop) on Jul 01, 2002 at 18:55 UTC
    using constant is a very good thing to do. However, if you don't know what constant is doing, you can be very surpsised.
    use constant LOG_DIRECTORY => '/foo/bar/baz'; # Equivalent to sub LOG_DIRECTORY () { '/foo/bar/baz' }
    The most obvious problem is interpolation in double-quoted strings.

    Similarly, you can't use LOG_DIRECTORY as the key to a hash, because it's not a C-style preprocessor declaration, but a function declaration.

    Just, be careful and know what is happening under the hood.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

      Try printing out the keys of %hash. You just assigned the value "happy" to the key "LOG_DIRECTORY". To use the constant LOG_DIRECTORY as the key you need to explicitly use it as a function.
      Doh! Nevermind....

      I can see the interpolation problem, but whats this about not using a constant as a hash key?

      #!/usr/bin/perl -w use strict; use constant LOG_DIRECTORY => '/foo/bar/baz'; my %hash; $hash{LOG_DIRECTORY} = 'happy'; print "log directory ${\LOG_DIRECTORY} is $hash{LOG_DIRECTORY}\n"; __END__ produces: log directory /foo/bar/baz is happy

      -Blake