我有一些Perl代码,还有一个HERE文档。在HERE文档的文本中,嵌入了关键字 case 。这似乎使Switch语句异常紧张。我疯了吗?
#!/usr/bin/perl
use strict;
use warnings;
use utf8; # Meaning "This lexical scope (i.e. file) contains utf8"
use Switch;
sub printUsage {
print STDERR << "HERE";
+
--rollback | - In case of "--reallydo", perform a ROLLBACK instead of a COMMIT at
| transaction end.
+
HERE
}
在Perl 5.16中运行此命令可获得:
Bad case statement (invalid case value?) near avo2.pl line 13
即从字面上看,In case of
在“这里”不受欢迎。一些错误?我应该在Perl bug tracker提出这个问题吗?
答案 0 :(得分:6)
如果可以避免的话,请不要use Switch
,它是一个源过滤器,您已经发现了隐藏在其中的漏洞之一。 named()/ when()会更好,但是有问题,现在标记为实验性的。如果您希望获得与case语句等效的选项,请尝试
for ($test_this) {
if ( ! /\D/ ) {
say 'is numbers';
last;
}
if ( $_ eq 'exit' ) {
say 'exit found';
last;
}
if (/^\p{Lu}/) {
say 'Upper case letter';
last;
}
# Default option
say 'Default';
last;
}