【发布时间】:2014-11-29 07:34:50
【问题描述】:
在声明 Perl 哈希时,我想知道是否可以使用在声明之前分配的值。
我想一次性完成类似的操作:
my %H = (something => generateString());
$H{foo} = $H{something} . "/FOO",
$H{bar} = $H{something} . "/BAR",
我可以想象这样的事情:
my %H = (
something => generateString(),
foo => $_{something} . "/FOO",
bar => $_{something} . "/BAR",
);
编辑:需要明确的是,我不关心$H{something} 的实际引用(即稍后更改$H{something} 不应影响$H{foo})。我只想将它的值放入字符串连接中。
【问题讨论】:
-
(你的意思是“分配”。)是的,但你以前想要它。 $H{something} 中没有任何内容。所以问题是
-
所以你想要
my %H = ( something => generateString(), foo => stack(2) . "/FOO", bar => stack(4) . "/BAR" );。是的...不。 -
my %H = ( something => generateString(), foo => $STACK[-2] . "/FOO", bar => $STACK[-4] . "/BAR" );再好不过了。 -
你问怎么做。我向你展示了它是可以做到的,我解释了为什么没有人这样做。我不推荐任何编码实践。至于想了解事情在后台是如何发生的,为什么你接受了根本没有解释任何事情的答案,而赞成确切解释了你声称想要理解的答案?
-
哈希问题总是很好的问题,因为 - 嗯 - hashes are the "key" to perl 和 perl OO 和 Moose 等。为了记录,我不是那么“高级”,但它是 Sriram Srinivasan 的经典之作,高级Perl Programming, O'Reilly, 1997 帮助我在最短的时间内学到了最多的东西。好吧,这与@ikegami mpapec 和其他人在这里相结合。
标签: perl