2015-01-04 70 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, 
      );