- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在“Programming Perl”一书中有一个片段(剪切):
By default, when(EXPR) is treated as an implicit smartmatch of
$_;
that is,$_ ~~ EXPR
. However, if the EXPR argument to when is one of the 10 exceptional forms listed below, it is evaluated directly for a Boolean result, and no smartmatching occurs:
...
A regular expression match in the form of /REGEX/, $foo =~ /REGEX/, or $foo =~ EXPR.
evaluated directly for a Boolean result
?
#!/usr/bin/perl
use v5.14;
my @a = ('aaa', 'bbb', 'ccc');
given(@a) {
when (/a/) { say '@a contains an a'; }
default { say '@a does not contain an a' }
}
@a does not contain an a
@a contains an a
@a does not contain an a
@a does not contain an a
最佳答案
仔细阅读文档:
Another useful shortcut is that, if you use a literal array or hash as the argument to "given", it is turned into a reference. So "given(@foo)" is the same as "given(\@foo)", for example.
given (@a)
变成了
given(\@a)
.没有智能匹配,因为你用的是
when (/a/)
,所以你试图匹配
\@a =~ /a/
ARRAY(0x9a4e7f8)
,但通常不会:-)
关于perl - "evaluated directly for a Boolean result, and no smartmatching occurs"中的 "Programming Perl"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687349/
为什么智能匹配运算符 ~~ 说 0 不在 (0, 5..100) 中? print ((0 ~~ (0, 5..100)) ? "Y" : "N"); N 测试它here . 最佳答案 将右侧设为数组
我想检查一个字符串是否匹配多个正则表达式模式。我遇到了related question ,布拉德·吉尔伯特answered使用 smartmatch 运算符: my @matches = ( qr
以下脚本智能匹配两个数组的切片。一开始,两个数组是相同的,我得到了合理的结果。然后我更改其中一个数组并智能匹配两个新切片,但它仍然说这些切片是相同的。但是,当我将切片复制到数组中时,对数组进行智能匹配
我目前正在阅读Intermediate Perl来自 O'Reilly,我正在尝试做其中一项练习。我对 Perl 中的引用不熟悉,所以我希望我不会误解某些东西并错误地编写此练习。 但是,我尝试调试此代
我正在尝试使用 smartmatch 运算符将简单字符串与正则表达式模式进行匹配: #!/usr/bin/env perl use strict; use warnings; use utf8; us
我现在正在使用 Perl 5.24 并且 smartmatch 是一个很棒的多功能运算符,例如, %foobar ~~ @foo; 以及其中的所有错综复杂。 我知道从 5.27 开始,它的功能将减少到
在“Programming Perl”一书中有一个片段(剪切): By default, when(EXPR) is treated as an implicit smartmatch of $_;
我是一名优秀的程序员,十分优秀!