http://qs321.pair.com?node_id=546315


in reply to Syntax checking without BEGIN blocks

I like to syntax check my own code, esp during a development cycle. (This isn't as useful for other people's modules but that's why test suites exist.) As others have mentioned, perl itself is unable to do this in all cases. IMO it is a module writer's responsibility, if at all possible, to allow the module user to check their own code without side effects. For example, it appears that most simple side effects (e.g. unlink) can be "commented" out with the $^C variable like this...

unlink("myfile") unless $^C;

I haven't seen much mention of $^C in the past, so perhaps someone more knowledgable can comment on whether this is always effective.

Replies are listed 'Best First'.
Re^2: Syntax checking without BEGIN blocks
by Anonymous Monk on May 01, 2006 at 16:38 UTC
    IMO it is a module writer's responsibility, if at all possible, to allow the module user to check their own code without side effects.

    That assumes no incompetence or malice on the part of the module writer. One of the first tests of competence is to see if the module is will actually pass a syntax check.

    The problem of how to do that safely is really the one I'd like to address.

      If you are worred about incompetance or malice, you better visually inspect the module and the Makefile that comes with it (I certainly do). Syntax checking is great for finding bugs during compiling your own code, but don't confuse it with keeping things safe. In fact the safest code is code that fails a syntax check.

      Syntax checking can't stop someone from writing syntactically correct, non-BEGIN block, destructive code. All they have to do is bury something like system("rm -rf *") in the module somewhere and you will have lots of fun trying to find out why your system doesn't work.

      A reply falls below the community's threshold of quality. You may see it by logging in.