小编Jos*_*fer的帖子

如何在Perl条件中检测无法访问的代码,它总是计算为false?

我是Perl的新手,目前我的任务是整理和维护一个庞大且相当混乱的Perl项目.我正在使用perl-critic来帮助我检测代码中的问题(并教我最佳实践).

现有代码具有编码器创建无法访问代码的位置.例如,他们添加了'&& 0'作为评论一些代码分支的懒惰方式:

if ($req->param('donut') && 0) {
    unreachable code... 
} else {
    always branches to here...
}
Run Code Online (Sandbox Code Playgroud)

我希望perl或者Critic会在这种情况下警告我无法访问的代码(条件有一个常量值评估为false),但事实并非如此.

是否有可以使用的工具或脚本可以可靠地检测到这种事情?

显然我可以在源代码中搜索"&& 0",但除了将"&& 0"附加到if语句之外,编码器还有许多方法可以创建无法访问的代码.

perl perl-critic

8
推荐指数
2
解决办法
365
查看次数

MATLAB尝试并捕获问题

我在MATLAB中遇到以下try和catch代码有问题:

fonster='';
while ~(~isempty(fonster) && isnumeric(fonster) && isreal(fonster) && isfinite(fonster) && (fonster == fix(fonster)) && (fonster > 0))
    try
        fonster = input('Välj ett heltal till fönsterplatsen du vill lägga grafen i: ');
    catch
        disp('Du måste mata in ett heltal');
    end
end
Run Code Online (Sandbox Code Playgroud)

当输入无效输入作为输入函数的字符串时,它似乎永远不会进入代码的catch部分.相反,它只是重新运行输入并忽略我的输出消息.奇怪的是我在代码中的另一个地方使用了一个catch,但这次它不起作用.

以下是一些运行示例:

没有try和catch语句的输入:

Välj den fönsterplats du vill lägga grafen i: o
Error using input
Undefined function or variable 'o'.

Error in skapaPlot (line 11)
    fonster = input('Välj den fönsterplats du vill lägga grafen i:
    ');

Error in mainMeny …
Run Code Online (Sandbox Code Playgroud)

matlab exception-handling input

4
推荐指数
1
解决办法
2353
查看次数

当正则表达式由冒号分隔时,它意味着什么?

冒号在我在某些生产代码中找到的Perl正则表达式中起什么作用?

if ($r->uri =~ m:/copy/(\d+):) {
    my $ref = $1;
Run Code Online (Sandbox Code Playgroud)

代码正在解析URI,第二行使用捕获的组.

regex perl

2
推荐指数
2
解决办法
121
查看次数

标签 统计

perl ×2

exception-handling ×1

input ×1

matlab ×1

perl-critic ×1

regex ×1