in reply to Looking for pointers or optimizations.

Hi,

You really might what to try out the module "perlcritic", based on Damian Conway's book Perl Best Practices. Check Perlcritic
Using it from Command Line Interface like so:
perlcritic -3 perlscript.pl

Replies are listed 'Best First'.
Re^2: Looking for pointers or optimizations.
by greengaroo (Hermit) on Aug 21, 2012 at 14:24 UTC

    Please correct me if I am wrong (sometimes I am) but I think that no warnings; works for the -w switch too. I was asking myself the same question a while ago. Try this:

    #!/usr/bin/perl5.10 -w my %hash1 = { test1 => 'test1', test2 => 'test2' }; no warnings; my %hash2 = { test1 => 'test1', test2 => 'test2' }; use warnings; my %hash3 = { test1 => 'test1', test2 => 'test2' };

    I get:

    Reference found where even-sized list expected at ./test_warnings.pl l +ine 3. Reference found where even-sized list expected at ./test_warnings.pl l +ine 15.

    Now the question is, what is the difference if any between the -w switch and use warnings;?

    Update: Answering myself, on perldoc it says: The warnings pragma is a replacement for the command line flag -w , but the pragma is limited to the enclosing block, while the flag is global.

    Take my advice. I don't use it anyway.

      I very recently encountered a spurious(?) error message (on v5.8.2):

      Use of uninitialized value in substitution (s///) at (eval 2) line 21

      Which resulted from the addition of one line like this:

      $hash{$var1}{'string'} = $var2;

      I confirmed that the variables were defined, and that the hash entry was created. I then tried:

      { no warnings 'uninitialized'; # and later: no warnings; $hash{$var1}{'string'} = $var2; }

      To no avail. Curiously, the error wasn't occurring at that line (confirmed with print statements); but it disappeared if I commented out that line.

      Removing -w got rid of the error.