gpt4 book ai didi

perl - 为什么要使用警告;最后走?

转载 作者:行者123 更新时间:2023-12-02 17:33:40 25 4
gpt4 key购买 nike

我依稀记得,warnings pragma 应该位于使用 use 加载的我们模块列表的最后。我还依稀记得这与注册自己的警告类别的模块有关,但我无法重现任何问题。有人可以指出相关文章或展示一个示例,其中 warnings pragma 的位置会产生影响吗?

最佳答案

这可能就是您所指的。不管怎样,这是需要注意的事情,我将其作为错误提交。 编辑 bug在 v5.27.6 中已修复。

我的/Warnings.pm

package My::Warnings;

use warnings::register;

sub test {
warnings::warnif 'This is my warning';
}

1;

main.pl

use strict;
use feature 'switch';

use warnings 'all';

use My::Warnings;

print undef;

given (1) { }

My::Warnings::test();

正如预期的那样,这将输出

given is experimental at E:\Perl\source\main.pl line 10.
Use of uninitialized value in print at E:\Perl\source\main.pl line 8.
This is my warning at E:\Perl\source\main.pl line 12.

但是,如果禁用任何警告类别,它也会禁用自定义类别。像这样

use strict;
use feature 'switch';

use warnings 'all';
no warnings 'experimental';

use My::Warnings;

print undef;

given (1) { }

My::Warnings::test();

这只是输出

Use of uninitialized value in print at E:\Perl\source\main.pl line 9.

并且似乎有必要在使用 My::Warnings 让它们执行之后启用警告

use strict;
use feature 'switch';

use My::Warnings;

use warnings 'all';
no warnings 'experimental';

print undef;

given (1) { }

My::Warnings::test();

产品

Use of uninitialized value in print at E:\Perl\source\main.pl line 9.
This is my warning at E:\Perl\source\main.pl line 13.


<小时/>

更新

此外,重新启用关闭自定义警告的类别会使它们处于禁用状态

类似这样的事情

use strict;
use feature 'switch';

use warnings 'all';
no warnings 'experimental';
use warnings 'experimental';

use My::Warnings;

print undef;

given (1) { }

My::Warnings::test();

仅打印

given is experimental at E:\Perl\source\main.pl line 12.
Use of uninitialized value in print at E:\Perl\source\main.pl line 10.

关于perl - 为什么要使用警告;最后走?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638692/

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