将数组映射到哈希语法错误

时间:2014-04-16 09:53:28

标签: arrays perl hash map

我不太清楚为什么,但我不断收到以下语法错误:near ") :"

my %temp =  map { /(\S+)\:x\:(\S+)\:(\S+)/ ? ($1 => $2) : (); 
                  ($1.'members' => $3) : ()
                } @output;

理想情况下,我想要做的是将$1 to $2,然后$1.'members'分配给$ 3。对我来说似乎没问题,但我无法弄清楚问题是什么。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

暂时忘掉map,看看这段代码:

/(\S+)\:x\:(\S+)\:(\S+)/ ? ($1 => $2) : (); 
($1.'members' => $3) : ();

这是什么意思?这一行特别是语法错误:

($1.'members' => $3) : ();

我想你想要:

/(\S+)\:x\:(\S+)\:(\S+)/
   ? ($1 => $2, $1.'members' => $3)
   : ();

添加回map

my %temp = map {
               /(\S+)\:x\:(\S+)\:(\S+)/
                   ? ($1 => $2, $1.'members' => $3)
                   : ();
           } @output;