Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^3: My CPAN Resolutions (perlcritic)

by tobyink (Canon)
on Jan 01, 2013 at 16:35 UTC ( [id://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'

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1011162]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2024-04-26 06:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found