我正在编写一个调用 VMware vSphere perl API 的 perl 脚本。我遇到了一些问题,在谷歌搜索时,我找到了一个似乎对我有用的解决方案。但是,代码的重要部分之一是用map
. 归功于编写它的 VMware 社区成员。这是代码:
$datastore_map = map { $_->{'mo_ref'}->{'value'} => $_ } @{$datastore_views || [ ]};
我无法理解上面的行在做什么。
所以,你能帮我把上面的行转换成 foreach 循环或类似的东西吗?相信 TMTOWTDI,必须有另一种方法来编写相同的逻辑。
我试图学习这个map
功能很多次,但它总是在我脑海中浮现。因此,我想在不使用该map
功能的情况下实现上述逻辑。
编辑:
阅读答案后,我认为应该是%datastore_map
而不是$datastore_map
。因为代码的下一行是$datastore = $datastore_map->{$moref->{'value'}};
它必须是一个错字。
当 stacoverflow 允许时,我会接受答案。感谢您的快速回复。我花了将近一个小时试图理解它并失败了。
谢谢。
编辑:
感谢@nickisfat、@choroba 和@ikegami 的回复。所有答案都是正确的,但我只能接受一个。所以我会选择按时间顺序最先发布的那个。再次感谢您的回答。