次のコードでは、uninitialized value
という警告が表示されますが、2番目のgiven/when
の例でのみ表示されます。どうしてこれなの?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
したがって、これを修正するには、「定義済み」チェックを上部に置く必要がありますか? – simbabque
@simbabque、それは警告を削除するでしょう。 – Qtax