gpt4 book ai didi

perl - 更新 : Initialise and Clear multiple hash in one line

转载 作者:行者123 更新时间:2023-12-04 04:23:19 24 4
gpt4 key购买 nike

如何在一行中初始化和清除多个哈希。

例如:

my %hash1 = ();
my %hash2 = ();
my %hash3 = ();
my %hash4 = ();

my ( %hash1, %hash2, %hash3, %hash4 ) = ?

最佳答案

看起来(从您的评论中)您确实想要清空其中已经包含内容的哈希。你可以这样做:

(%hash1,%hash2,%hash3) = ();

完整示例:

use strict;
use warnings;

my %hash1 = ('foo' => 1);
my %hash2 = ('bar' => 1);
my %hash3 = ('baz' => 1);

(%hash1,%hash2,%hash3) = ();

print (%hash1,%hash2,%hash3);

变量声明总是为您提供一个空变量,因此无需将其设置为空。即使在循环中也是如此:

for (0..100)
{
my $x;
$x++;
print $x;
}

这将一遍又一遍地打印1;即使您可能期望 $x 保留其值,但它没有。

解释: Perl 允许像 ($foo,$bar) = (1,2) 这样的列表赋值。如果右边的列表更短,任何剩余的元素都会被分配 undef。因此,将空列表分配给变量列表会使它们全部未定义。

另一种设置一堆东西的有用方法是 x 运算符:

my ($x,$y,$z) = (100)x3;

这会将所有三个变量都设置为 100。不过,它不适用于哈希,因为每个变量都需要分配一个列表。

关于perl - 更新 : Initialise and Clear multiple hash in one line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com