gpt4 book ai didi

perl - 给定/当值未定义时

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

在下面的代码中,我得到一个 uninitialized value警告,但仅限于第二个 given/when例子。为什么是这样?

#!/usr/bin/env perl
use warnings;
use 5.12.0;

my $aw;

given ( $aw ) {
when ( 'string' ) {
say "string";
}
when ( not defined ) {
say "aw not defined";
}
default {
say "something wrong";
}
}

given ( $aw ) {
when ( /^\w+$/ ) {
say "word: $aw";
}
when ( not defined ) {
say "aw not defined";
}
default {
say "something wrong";
}
}

我得到的输出是:
aw not defined
Use of uninitialized value $_ in pattern match (m//) at ./perl.pl line 20.
aw not defined

最佳答案

given / when 使用“smartmatch operator”:~~ .
undef ~~ string是:

undef     Any        check whether undefined
like: !defined(Any)

因此这里没有警告。
undef ~~ regex是:
 Any       Regexp     pattern match                                     
like: Any =~ /Regexp/

尝试匹配 undef 时会产生警告.

关于perl - 给定/当值未定义时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158496/

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