daugh016 has asked for the wisdom of the Perl Monks concerning the following question:
Monks, I have a(some) question(s) having to do with the critique of my subroutines by Perl::Critic. I am new to Perl and have been writing my code to perform what I would like then making the recommendations from Perl::Critic. I know this isn't the most efficient way to learn the language but it has helped somewhat since I am new. Anyway, here are the two sub routines I have:
#!/usr/bin/perl # $Id: XXX.plx; # $Revision: 1 $ # $HeadURL: 1 $ # $Source: /Perl/XXX.plx $ # $Date: 10.30.2012 $ # $Author: daugh016 $ use 5.014; #this enables strict use warnings; use vars qw/ $VERSION /; $VERSION = '1.00'; use English qw(-no_match_vars); use Readonly; my $print_err = "Cannot print:\t"; my $var_test = 'This is a test variable'; print_var_with_err( "\$var_test", "\$print_err" ); my @list_test = qw(This is a test list); print_list_with_err( "\@list_test", "\$print_err" ); # Print variable with error messages sub print_var_with_err { my ( $a, $b ) = @_; my $a_eval = eval $a; my $b_eval = eval $b; print $a . qq{:\n} . $a_eval . qq{\n} or croak( $b_eval . $ERRNO ) +; return; } # Print list with error messages sub print_list_with_err { my ( $c, $d ) = @_; my @c_eval = eval "$c"; my $d_eval = eval $d; while ( my ( $index, $elem ) = each @c_eval ) { say $c . q{[} . $index . qq{]:\n} . $elem . qq{\n} or croak( $d_eval . $ERRNO ); } return; }
The output follows:
$var_test:
This is a test string
@list_test[ 0]:
This
@list_test[ 1]:
is
@list_test[ 2]:
a
@list_test[ 3]:
test
@list_test[ 4]:
list
I am getting the following problems from Perl::Critic:
Useless interpolation of literal string at line 21, column 21. See page 51 of PBP. Severity: 1
Useless interpolation of literal string at line 21, column 35. See page 51 of PBP. Severity: 1
Useless interpolation of literal string at line 23, column 22. See page 51 of PBP. Severity: 1
Useless interpolation of literal string at line 23, column 37. See page 51 of PBP. Severity: 1
Expression form of "eval" at line 29, column 18. See page 161 of PBP. Severity: 5
Expression form of "eval" at line 30, column 18. See page 161 of PBP. Severity: 5
Expression form of "eval" at line 39, column 18. See page 161 of PBP. Severity: 5
Expression form of "eval" at line 40, column 18. See page 161 of PBP. Severity: 5
I cannot figure out how to fix these issues.
Also, since essentially these functions are doing the same thing (one with variables and one with lists), is there a way to combine them where it wouldn't matter if variables or arrays are passed?
Last, I am sure I am missing some other best practices. Any suggestions would be greatly appreciated!
Thank you Monks! You guys/gals are great!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Perl::Critic and Subroutines
by davido (Cardinal) on Nov 28, 2012 at 01:08 UTC | |
|
Re: Perl::Critic and Subroutines
by tobyink (Canon) on Nov 27, 2012 at 21:53 UTC | |
by daugh016 (Initiate) on Nov 27, 2012 at 22:26 UTC | |
by tobyink (Canon) on Nov 28, 2012 at 08:17 UTC | |
by daugh016 (Initiate) on Nov 28, 2012 at 20:46 UTC | |
|
Re: Perl::Critic and Subroutines
by toolic (Bishop) on Nov 28, 2012 at 03:04 UTC | |
|
Re: Perl::Critic and Subroutines
by Anonymous Monk on Nov 27, 2012 at 21:57 UTC | |
by tobyink (Canon) on Nov 28, 2012 at 10:23 UTC | |
by jthalhammer (Friar) on Dec 04, 2012 at 06:17 UTC | |
by daugh016 (Initiate) on Nov 27, 2012 at 22:22 UTC | |
by Anonymous Monk on Nov 27, 2012 at 23:05 UTC | |
by Anonymous Monk on Nov 27, 2012 at 23:07 UTC |