哈希(Hash)是Perl中用于存储键值对的数据类型,以 % 开头。本文将介绍哈希的创建、操作方法及其常见用法。


目录

  1. 哈希概述
  2. 哈希的创建
  3. 访问与修改哈希元素
  4. 哈希操作
  5. 哈希上下文
  6. 常用哈希函数
  7. 参考资料

1. 哈希概述

Perl 中的哈希(Hash)是一个无序的键值对集合:

  • :唯一标识符,通常是字符串。
  • :可以是任意标量(数字、字符串、引用等)。
  • 变量以 % 开头,访问单个元素时使用 $(因为返回的是标量)。

特点

  • 键是唯一的,若重复则覆盖。
  • 适合快速查找和数据映射。

站内链接:了解标量基础,见 Perl 标量


2. 哈希的创建

基本定义

使用括号和 =>(胖箭头):

use strict;
use warnings;

my %person = (
    "name" => "Alice",
    "age"  => 25,
    "city" => "Tokyo"
);
print "$person{'name'}\n";  # Alice

键值对列表

可以用逗号分隔:

my %colors = ("red", 1, "blue", 2);
print "$colors{'blue'}\n";  # 2

空哈希

my %empty = ();
print "Empty\n" unless keys %empty;

3. 访问与修改哈希元素

访问元素

使用花括号和键:

my %data = ("key1" => "value1", "key2" => "value2");
print "$data{'key1'}\n";  # value1

修改元素

直接赋值:

$data{'key1'} = "new_value";
print "$data{'key1'}\n";  # new_value

检查键是否存在

使用 exists

if (exists $data{'key3'}) {
    print "Key3 exists\n";
} else {
    print "Key3 does not exist\n";
}

4. 哈希操作

添加键值对

直接赋值:

$data{'key3'} = "value3";
print "$data{'key3'}\n";  # value3

删除键值对

使用 delete

delete $data{'key2'};
print "Key2 deleted\n" unless exists $data{'key2'};

清空哈希

赋值空列表:

%data = ();
print "Hash cleared\n" unless keys %data;

5. 哈希上下文

哈希在不同上下文中的行为:

  • 标量上下文:返回键值对数量(偶数)。
  • 列表上下文:返回所有键值对。
my %info = ("a" => 1, "b" => 2);
my $count = %info;         # 2(键值对数)
my @pairs = %info;         # (a, 1, b, 2)
print "$count, @pairs\n";

站内链接:更多上下文说明,见 Perl 数据类型


6. 常用哈希函数

  • keys:获取所有键。
my @keys = keys %info;
print "Keys: @keys\n";  # a b
  • values:获取所有值。
my @values = values %info;
print "Values: @values\n";  # 1 2
  • each:迭代键值对。
while (my ($key, $value) = each %info) {
    print "$key => $value\n";  # a => 1, b => 2
}
  • sort 与哈希:
my @sorted_keys = sort keys %info;
print "Sorted keys: @sorted_keys\n";  # a b

7. 参考资料

站内链接

出站链接

其他资源

  • 《Learning Perl》 – 哈希章节。
  • X社区:搜索 #PerlHashes 获取代码示例。

这篇指南全面介绍了Perl哈希的创建、操作和函数应用。如果需要更深入的内容(比如嵌套哈希或哈希引用),请告诉我!