如何在Perl中使用for循环创建变量?

adi*_*dir 0 perl

我正在使用Perl,我想在循环中创建变量.所以每个循环都会创建一个具有不同数字的变量.例如,第一个循环将创建:

num1 = x;
Run Code Online (Sandbox Code Playgroud)

第二个循环将创建

num2 =x;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

sid*_*yll 6

使用数组并在每次迭代时添加一个数字.

my @nums;

for (1..10) {
    push @nums, $_; # your `x'
}
Run Code Online (Sandbox Code Playgroud)

  • @adir - 是的,但它是邪恶的,不合逻辑的,愚蠢的,缓慢的,也是调试的噩梦.这正是数组的设计目标. (7认同)

Axe*_*man 6

如果你真的需要命名它们,那么哈希应该做得很好.我推荐这个,但你可以做到.我只是向您展示如何以系统的方式"命名"事物,就像使用第一类变量一样.

my %hash;
my $i = 0;
for ( @list ) { 
    $hash{ 'num' . ++$i } = $_;
}
Run Code Online (Sandbox Code Playgroud)

同样,当数组执行类似的操作时,根据它们的顺序命名数字是没有意义的,而且你永远不必担心字典顺序会妨碍它.

因此,您应该通过命名变量来考虑您尝试解决的问题,以便确定这是否是最佳方法.


我只想回想一下,当我想输入与标量语法尽可能不同的时候我做了什么.它依赖于*_一个glob 的事实,但是在GLOB中没有使用某些槽.

所以你可以使用local %_;

因此,只有3个额外的字符可以用任何这种类型的伪变量键入:

$_{num001} += 43;
Run Code Online (Sandbox Code Playgroud)

当然,这是您必须输入的额外字符数相同的数量

$v{num001} += 43;
Run Code Online (Sandbox Code Playgroud)

同样.