my %hash1 = (
a=>192.168.0.1,
b=>192.168.0.1,
c=>192.168.2.2,
d=>192.168.2.3,
e=>192.168.3.4,
f=>192.168.3.4
);
我有一个上面给出的 perl 哈希。键是设备名称,值是 IP 地址。如何使用 %hash1 创建没有重复 IP 地址(如 %hash2)的哈希? (相同ip的设备被删除)
my %hash2 = ( c=>192.168.2.2, d=>192.168.2.3 );
最佳答案
首先你需要引用你的IP地址,因为192.168.0.1
在perl中是V-String,意思是chr(192).chr(168).chr(0) .chr(1)
.
我的变种是:
my %t;
$t{$_}++ for values %hash1; #count values
my @keys = grep
{ $t{ $hash1{ $_ } } == 1 }
keys %hash1; #find keys for slice
my %hash2;
@hash2{ @keys } = @hash1{ @keys }; #hash slice
关于perl - 如何删除重复值并创建新的 perl 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677331/