我使用Perl,我想在循环中创建变量。所以每个循环都会为我创建一个具有不同数值的变量。 例如 第一个环路将创建:如何在Perl中使用for循环创建变量?
num1 = x;
第二环路将创建
num2 =x;
感谢您的帮助
我使用Perl,我想在循环中创建变量。所以每个循环都会为我创建一个具有不同数值的变量。 例如 第一个环路将创建:如何在Perl中使用for循环创建变量?
num1 = x;
第二环路将创建
num2 =x;
感谢您的帮助
使用一个阵列,并添加了一些每一次迭代。
my @nums;
for (1..10) {
push @nums, $_; # your `x'
}
如果你真的需要名他们,那么哈希应该做的一样好。我不要推荐这个,但你可以做到这一点。我只是向你展示如何以系统的方式“命名”事物,就像你使用一流的变量一样。
my %hash;
my $i = 0;
for (@list) {
$hash{ 'num' . ++$i } = $_;
}
再次,这是相当无意义的名号码根据自己的订单时的阵列有类似的功能,再加上你永远不必担心字典顺序的方式获得。
因此,您应该考虑通过命名变量来解决您试图解决的问题,以便确定这是否是最佳方式。
我刚刚回想起我所做的,当我想输入尽可能少的标量语法。它依赖于*_
是一个glob,但GLOB中没有使用某些插槽。
所以你可以使用local %_
;
因此仅存在额外的字符与任何这种类型的伪变量的输入:
$_{num001} += 43;
当然,这是你必须键入
的多余的字符相同的量$v{num001} += 43;
以及。
虽然sprintf使它看起来有些过于复杂,但我原则上同意:如果您需要将命名数据添加到以后要使用的知识池中,请使用散列。如果您需要一组有序的数据,请使用数组。 –
@JoelBerger,通过lex命令(通常在其他人的代码中)有足够的插入,对于我来说,使用'sprintf'格式规范连接字符串和数字是我的第二天性。 – Axeman
有没有办法做到这一点没有数组? – adir
@adir - 是的,但它是邪恶的,不合逻辑的,愚蠢的,缓慢的,也是调试的噩梦。这正是阵列设计的目的。 – Quentin
@Quentin - 谢谢 – adir