数组是Perl中用于存储有序数据列表的重要数据类型,以 @ 开头。本文将介绍数组的创建、操作方法及其常见用法。


目录

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

1. 数组概述

Perl 中的数组(Array)是一个有序的元素集合,元素可以是标量(数字、字符串等)。数组变量以 @ 开头,单个元素以 $ 访问(因为取出的元素是标量)。

特点

  • 下标从 0 开始。
  • 支持动态扩展。
  • 可存储混合类型数据。

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


2. 数组的创建

基本定义

使用括号和逗号:

use strict;
use warnings;

my @numbers = (1, 2, 3, 4);
my @mixed = (1, "two", 3.14);
print "@numbers\n";  # 1 2 3 4

范围操作符

使用 .. 创建连续序列:

my @range = (1..5);      # 1 2 3 4 5
my @letters = ("a".."c"); # a b c
print "@range\n";

qw 快捷方式

简化字符串数组创建:

my @words = qw(apple banana cherry);
print "@words\n";  # apple banana cherry

3. 访问与修改数组元素

访问元素

使用下标(从 0 开始):

my @fruits = ("apple", "banana", "orange");
print "$fruits[0]\n";  # apple
print "$fruits[-1]\n"; # orange(负索引从末尾取)

修改元素

直接赋值:

$fruits[1] = "grape";
print "@fruits\n";  # apple grape orange

数组长度

使用标量上下文:

my $size = @fruits;
print "Size: $size\n";  # 3

4. 数组操作

添加元素

  • push:添加到末尾。
  • unshift:添加到开头。
push @fruits, "kiwi";     # apple grape orange kiwi
unshift @fruits, "mango"; # mango apple grape orange kiwi
print "@fruits\n";

删除元素

  • pop:移除并返回末尾元素。
  • shift:移除并返回开头元素。
my $last = pop @fruits;   # kiwi
my $first = shift @fruits; # mango
print "Removed: $first, $last\n";
print "@fruits\n";  # apple grape orange

切片

提取部分元素:

my @subset = @fruits[0, 2];  # apple orange
print "@subset\n";

5. 数组上下文

Perl 中的数组行为取决于上下文:

  • 标量上下文:返回数组长度。
  • 列表上下文:返回所有元素。
my @data = (10, 20, 30);
my $length = @data;         # 3
my ($x, $y) = @data;        # 10, 20
print "$length, $x, $y\n";

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


6. 常用数组函数

  • sort:排序。
my @sorted = sort @fruits;  # apple grape orange
print "@sorted\n";
  • reverse:反转。
my @reversed = reverse @fruits;
print "@reversed\n";  # orange grape apple
  • join:连接元素。
my $string = join(", ", @fruits);
print "$string\n";  # apple, grape, orange
  • splice:插入/删除元素。
splice @fruits, 1, 1, "pear";  # 替换第2个元素
print "@fruits\n";  # apple pear orange

7. 参考资料

站内链接

出站链接

其他资源

  • 《Learning Perl》 – 数组章节。
  • X社区:搜索 #PerlArrays 获取代码示例。

这篇指南详细介绍了Perl数组的创建、操作和函数应用。如果需要更深入的内容(比如多维数组或性能优化),请告诉我!