当我使用"given"时为什么会出现语法错误?

sur*_*190 3 perl

我正在尝试运行以下代码:

foreach my $k (keys %rec) {
    #switch for watchlist figures
    given ($k) { #line 93

        # Code omitted

        when ("p") { #positive breakout
            if ($row{cls} > $rec{$k}) {                       
                $email .= "positive";   
            } # line 104            
        }                       
        when ("n") { #negative breakout
            if ($row{cls} < $rec{$k}) { #line 107
Run Code Online (Sandbox Code Playgroud)

但我得到一个语法错误:

syntax error at check_watch.pl line 93, near ") {"
syntax error at check_watch.pl line 104, near "}"
Unterminated <> operator at check_watch.pl line 107.
Run Code Online (Sandbox Code Playgroud)

为什么?

jwo*_*der 7

given并且when仅在其中一个use feature "switch";use v5.10;(或稍后的某个值)生效时可用.将其中一行放在源文件的顶部.

  • @StevieG对你的回答有一个评论,后来被作者删除了.[`given`](http://perldoc.perl.org/functions/given.html)功能是实验性的,因此在生产环境中最好避免使用.你最好写'if-then-else`语句来实现你的目标. (3认同)

小智 5

这是因为它默认不启用.添加行:

use 5.10.1;
Run Code Online (Sandbox Code Playgroud)

到代码