Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Looking for pointers or optimizations.

by 2teez (Priest)
on Aug 21, 2012 at 13:47 UTC ( #988733=note: print w/ replies, xml ) Need Help??


in reply to Looking for pointers or optimizations.

Hi,

  • You might want to use "use warnings" instead of "-w", so that you can remove warning using "no warnings" pargma, where you wouldn't want some.
  • Always check the return for the open function like so: open $fh,'<',$filename or die "can't open file: $!" OR you use use autodie qw(open close);
  • The File handler $fh decleared was not used
  • filehandle $fh was not close. You should do that like so:close $fh or die "can't close file:$!"
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


Comment on Re: Looking for pointers or optimizations.
Select or Download Code
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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://988733]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2015-07-06 02:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (69 votes), past polls