gpt4 book ai didi

perl - 使用 perl 你怎么知道如何关闭一个特定的警告

转载 作者:行者123 更新时间:2023-12-04 22:44:13 25 4
gpt4 key购买 nike

我有一些我正在处理的遗留代码。一次清理太多了。它在 s 运算符内部使用\1 。我查看了 perllexwarn,发现我可以用“无警告 qw(syntax)”关闭它,但我通过反复试验做到了这一点。有没有更简单的方法可以正确地从警告到关闭它的方法?

它正在做这样的事情:

use strict;
$_ = "abc";
s/abc/\1/;
no warnings qw(syntax);
s/abc/\1/;

它生成的消息是:
\1 better written as $1

最佳答案

执行你的脚本

perl -Mdiagnostics ./a.pl

或临时添加 use diagnostics;到你的脚本。这会产生类似的东西
\1 better written as $1 at ./a.pl line 4 (#1)
(W syntax) Outside of patterns, backreferences live on as variables.
The use of backslashes is grandfathered on the right-hand side of a
substitution, but stylistically it's better to use the variable form
because other Perl programmers will expect it, and it works better if
there are more than 9 backreferences.

注意 (W syntax) ?字母是以下之一,单词是您要查找的警告类别。
  • (W) 警告(可选)。
  • (D) 弃用(默认启用)。
  • (S) 严重警告(默认启用)。
  • (F) fatal error (可捕获)。
  • (P) 您永远不应该看到的内部错误(可捕获)。
  • (X) 一个非常致命的错误(不可捕获)。
  • (A) 外来错误消息(不是由 Perl 生成的)。

  • diagnosticsperldiag 获取其信息,您可以手动搜索而不是使用 use diagnostics; .

    其他例子:
    $ perl -Mdiagnostics -we'print undef'
    Use of uninitialized value in print at -e line 1 (#1)
    (W uninitialized) An undefined value was used as if it were already
    [...]

    $ perl -Mdiagnostics -we'no warnings qw( uninitialized ); print undef'

    $ perl -Mdiagnostics -we'sub foo { } sub foo { }'
    Subroutine foo redefined at -e line 1 (#1)
    (W redefine) You redefined a subroutine. To suppress this warning, say
    [...]

    $ perl -Mdiagnostics -we'no warnings qw( redefine ); sub foo { } sub foo { }'

    $

    关于perl - 使用 perl 你怎么知道如何关闭一个特定的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900103/

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