Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: My CPAN Resolutions (perlcritic)

by tobyink (Abbot)
on Jan 01, 2013 at 16:35 UTC ( #1011162=note: print w/ replies, xml ) Need Help??


in reply to Re^2: My CPAN Resolutions (perlcritic)
in thread My CPAN Resolutions

Stringy eval has its uses. Moose and Moo use it extensively for creating fast inlined accessors and constructors. Template-Toolkit uses it to create templates.

However it can also enable all sorts of ugly practices. For example, poor man's symbolic references...

use strict; my $red = '#ff0000'; my $green = '#00ff00'; my $blue = '#0000ff'; my $colour = 'green'; my $hex = eval "\$$colour"; # symbolic reference print "$hex\n";

When many newcomers turn to stringy eval, it's often because they're unaware of a better solution to their problem.

This is my problem with Perl::Critic. It takes a generally good guideline (stringy eval is often a bad idea; investigate other options first) and turns it into a concrete rule.

Yes, of course there's no critic comments but I don't really want to litter those around my code like rat droppings. (no strict and no warnings are already enough of an eyesore.)

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'


Comment on Re^3: My CPAN Resolutions (perlcritic)
Select or Download Code
Re^4: My CPAN Resolutions (perlcritic)
by Tommy (Chaplain) on Jan 01, 2013 at 16:38 UTC

    Exactly! Yes. What tobyink said.

    Things like Moose and Catalyst wouldn't even be possible w/o stringy eval.

    --
    Tommy

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (13)
As of 2015-07-02 09:48 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 (33 votes), past polls