【发布时间】:2014-09-24 07:27:18
【问题描述】:
我在其他语言中看到了与 PHP's compact function 等效的问题,但在 Perl 中没有看到,如果这是对我错过的事情的重复,请原谅我。如果你不熟悉这个功能,这里就是我要找的。p>
给定变量:
my $one = "1";
my $two = "2";
my $three = "3";
#using compact as example here since this function doesn't exist in perl
my $array = compact("one","two","three");
然后转储 $array 将给出:
[
one => "1,
two => "2",
three => "3"
]
来自PHP documentation for compact:
创建一个包含变量及其值的数组。
对于其中的每一个,
compact()在当前符号表中查找具有该名称的变量并将其添加到输出数组中,使得变量名称成为键,变量的内容成为该键的值.
我专门使用版本 5.8.8。如果我的某些语法不正确,请原谅我。我的背景是 PHP。
【问题讨论】:
-
你想要完成什么需要compact()?
-
我可能会误解,但这看起来很像using variables as variable names。糟糕。
-
谢天谢地,在 perl 中没有类似的东西,强加于一种语言似乎是一件可怕的事情。如果您解释您正在尝试做什么而不是如何尝试,那么这里的某人可能会帮助您找到更好的解决方案(可能涉及哈希)。
-
如果你只是想导入/导出变量,你可能想看看这个答案:stackoverflow.com/questions/4543934/…
-
需求最终发生了变化,这不再是必要的。当时的情况是我在子例程中实例化动态变量,并计划在模板中使用这些动态变量。这实际上只是一种风格偏好,但我想通过 "my $template_vars = compact("one","two","three");" 将它们作为键/值对数组传递而不是单个参数。要求发生了一些变化,所以我不再走这条路。我发现这个函数在 PHP 中很有用,不过我也在寻找类似的东西。
标签: perl