2015-01-04 30 views
3

我想初始化像这样的哈希:在Perl中,HEREIS符号可以在哈希初始化中使用吗?

use strict; 

my %hash = 
(
    key => <<END; 
abc 
def 
END 
    , 
    another_key => 17 
); 

当我在此代码运行perl - 顺,我得到的错误“语法错误在hash-initialize-test.pl 5号线,近“; “”。

在散列初始化中有没有办法使用HEREIS表示法(如<<END;)?如果不是,为什么不呢?

有几个简单的解决方法,但我喜欢使用HEREIS符号表示多行字符串,因为它很优雅,并避免引入不必要的变量。

+0

我试过choroba的解决方案,它的工作。以前,我总是在HEREIS表示法中使用分号,并且从来没有用逗号结束尾部引号,但在这种情况下它是有意义的,因为散列初始化中的键 - 值对以逗号结束。谢谢! –

+0

它通常被称为[** HEREDOC **](https://duckduckgo.com/?q=perldoc+heredoc)。 (不要改变这个问题,因为寻找这里的人也需要能够找到这些信息) –

回答

6

删除分号。没有声明结束。

my %hash = (key => <<'END', 
abc 
def 
END 
      another_key => 17, 
      );