【发布时间】:2016-08-10 04:26:51
【问题描述】:
在我写的最后一个脚本中,我需要一个类似于 switch 语句行为的行为。在 Perl 中对等价物的简单搜索使我找到了use Switch。一开始,一切都很好并且正常工作,直到一切都因描述性不强的错误而崩溃(它发生在一个带有正则表达式的 switch 语句上,但奇怪的是它没有发生在其他类似的 switch 语句上)。
编辑:崩溃的代码看起来像这样:
switch ($var) {
case /pattern1/ {...}
case /pattern2/ {...}
...
else {...}
}
这导致我放弃使用 Switch.pm 并寻找替代方案。
我找到了given 和for-when,当然总有直截了当的if-elsif-else。
- 为什么
Switch.pm如此不稳定? - 似乎
given和for-when具有相似的结构,但我想还是有区别的(因为两者都存在)。它是什么? -
if-elsif-else是否比其他选项慢很多?
【问题讨论】:
-
这回答了我的第一个问题,谢谢!很高兴知道
given具有更多功能。 -
given用于设置词法$_,但现在不存在了。 ///given的表达式在标量上下文中计算,而for循环返回的标量。 /// 有些东西告诉我given和for中允许的流控制关键字有所不同。
标签: perl if-statement switch-statement