How to check if a Perl script doesn’t have any compilation errors?

Beware!!

Using the below command to check compilation errors in your Perl program can be dangerous.

$ perl -c yourperlprogram

Randal has written a very nice article on this topic which you should check out

  • Sanity-checking your Perl code (Linux Magazine Column 91, Mar 2007)

Quoting from his article:

Probably the simplest thing we can tell is “is it valid?”. For this,
we invoke perl itself, passing the compile-only switch:

perl -c ourprogram

For this operation, perl compiles the program,
but stops just short of the execution phase. This means that every
part of the program text is translated into the internal data
structure that represents the working program, but we haven’t actually
executed any code. If there are any syntax errors, we’re informed, and
the compilation aborts.

Actually, that’s a bit of a lie. Thanks to BEGIN blocks (including
their layered-on cousin, the use directive), some Perl code may have
been executed during this theoretically safe “syntax check”. For
example, if your code contains:

BEGIN { warn "Hello, world!\n" } 

then you will see that message,
even during perl -c! This is somewhat surprising to people who
consider “compile only” to mean “executes no code”. Consider the
code that contains:

BEGIN { system "rm", "-rf", "https://stackoverflow.com/" } 

and you’ll see the problem with
that argument. Oops.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)