gpt4 book ai didi

perl - 使用 eval 插入变量时避免使用 PerlCritic

转载 作者:行者123 更新时间:2023-12-01 23:07:37 25 4
gpt4 key购买 nike

perlcritic正在提示以下代码中第一个 eval 行上的“eval”[BuiltinFunctions::ProhibitStringyEval] 的表达式形式:

use strict;
use warnings;
use feature qw/say/;

my $hasTwitter = 1;
my $validEmail = 0;

my $rule = '${hasTwitter} | ${validEmail}';
my $result = eval $rule;
say "Result -> $result";

$result = eval { $rule };
say "Result -> $result";

我尝试使用 eval {} 来修复 perlCritic,但它没有返回预期结果。

响应是:

Result ->  1
Result -> ${hasTwitter} | ${validEmail}

是否有使用字符串插值的解决方法?这个想法是在配置文件上设置一组规则,并让代码读取并评估它们。

谢谢

最佳答案

批评家的目的是让你思考:表达式作为字符串存在是否有原因?陷阱众多、安全风险高,能否避免?或者更确切地说,这些风险和问题是否值得做一些工作来避免?

对于初学者,您可以使用以下内容吗?

my $rule = sub { $hasTwitter || $validEmail };

my $result = $rule->();

或者也许

my $rule = 'has_twitter_or_email';

my %rules = (
has_twitter_or_email => sub { $hasTwitter || $validEmail },
);
my $result = $rules{$rule}->();

关于perl - 使用 eval 插入变量时避免使用 PerlCritic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com