This blog talks about below topics related to Hashes:
- Defining an hash
- Printing an hash
- Getting Length of an hash
- Adding elements in an hash
- Removing elements in an hash
- Clearing complete hash
- Sorting an hash by key
- Sorting an hash by value
- Checking if key in hash exists
NOTE: Hashes are complex list data, like arrays except they link a key to a
value. To define a hash, we use the percent (%) symbol before the name.
Define an hash
# Define an hash
%denomination = ("Hundred", 100, "Ten", 10, "Thousand", 1000);
# Alternate way
%denomination = ( "Hundred", 100,
"Ten", 10,
"Thousand", 1000 );
# One more way
%denomination = (
Hundred => '100',
Ten => '10',
Thousand => '1000',
);
Print an hash
# Print an hash
print %denomination
# Output: Thousand1000Hundred100Ten10
# Another way
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
# Output:
Thousand, 1000
Hundred, 100
Ten, 10
# One more way
foreach $key (keys %denomination)
{
print "$key: $denomination{$key}\n";
}
# Output: Thousand, 1000
Hundred, 100
Ten, 10
Getting Length of an hash
# Getting Length of an hash
%denomination = ("Hundred", 100, "Ten", 10, "Thousand", 1000);
print scalar (keys %denomination), "\n";
# Output: 3
Adding elements in an hash
%denomination = ("Hundred", 100, "Ten", 10, "Thousand", 1000);
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
print "\n";
$denomination{One} = "1";
$denomination{'Lakh'} = "100000";
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
# Output:
Thousand, 1000
Hundred, 100
Ten, 10
Thousand, 1000
Hundred, 100
Lakh, 100000
Ten, 10
One, 1
Removing elements in an hash
%denomination = ("Hundred", 100, "Ten", 10, "Lakh", 100000, "Thousand", 1000, "One", 1);
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
print "\n";
# Deletes the element pairs
delete($denomination{One});
delete($denomination{Lakh});
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
# Output:
Thousand, 1000
Hundred, 100
Lakh, 100000
Ten, 10
One, 1
Thousand, 1000
Hundred, 100
Ten, 10
Clearing complete hash
%denomination = ("Hundred", 100, "Ten", 10, "Lakh", 100000, "Thousand", 1000, "One", 1);
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
print "\n";
# Deletes complete Hash
undef %denomination;
while (($key, $value) = each(%denomination))
{
print "$key, $value\n";
}
# Output:
Thousand, 1000
Hundred, 100
Lakh, 100000
Ten, 10
One, 1
Sorting an hash by key
# Sorting an hash by key
%denomination = ("Hundred", 100, "Ten", 10, "Thousand", 1000);
foreach $key (sort keys %denomination)
{
print "$key: $denomination{$key}\n";
}
# Output:
Hundred: 100
Ten: 10
Thousand: 1000
Sorting an hash by value
# Sorting an hash by value
%denomination = ("Hundred", 100, "Ten", 10, "Thousand", 1000);
foreach $value (sort {$denomination{$a} cmp $denomination{$b} } keys %denomination)
{
print "$value $denomination{$value}\n";
}
# Output:
Ten: 10
Hundred: 100
Thousand: 1000
Checking if key in hash exists
print "Exists\n" if exists $array{$key};
print "Defined\n" if defined $array{$key};
print "True\n" if $array{$key};
# Output: Ten: 10
Hundred: 100
Thousand: 1000