Perl 函数参考
Perl - 核心函数参考
Section titled “Perl - 核心函数参考”本节提供了 Perl 中重要内建函数(built-in functions)的参考。现代 Perl 开发通常利用 CPAN 提供的全面模块来完成专门任务,但理解这些核心函数是基础。
注意:对于许多传统函数(例如,底层套接字操作、DBM 访问),专门的 CPAN 模块通常提供更健壮和功能更丰富的替代方案。对于特定问题领域,请务必查阅 CPAN 以了解现代最佳实践。
以下是 Perl 支持的重要函数列表。描述已更新以更清晰并适应现代上下文。
- abs - 返回其参数的绝对值 (absolute value)。
- accept - 接受传入的套接字连接 (incoming socket connection)。另请参阅
IO::Socket或Mojo::IOLoop以获取更高级的网络抽象。 - alarm - 安排一个 SIGALRM 信号。对超时有用,但考虑使用
Sys::SigAction等模块以进行健壮的信号处理。 - atan2 - 返回 Y/X 的反正切 (arctangent),范围在 -PI 到 PI 之间(弧度)。
- bind - 将地址绑定到套接字。另请参阅
IO::Socket。 - binmode - 准备文件句柄 (filehandle) 进行二进制 I/O,在 Windows 等系统上至关重要。
- bless - 通过将其与类名关联,将引用 (reference) 转换为对象 (object)。
- caller - 返回当前子例程调用 (subroutine call) 的上下文,对调试 (debugging) 和创建调用栈 (call stacks) 有用。
- chdir - 更改当前工作目录 (current working directory)。
- chmod - 更改文件列表的权限 (permissions)。
- chomp - 从字符串中移除尾随的换行符(或由
$/定义的记录分隔符)。 - chop - 移除字符串的最后一个字符(通常,
chomp更推荐)。 - chown - 更改文件列表的所有权(用户和组)。
- chr - 返回字符集 (character set) 中由数字表示的字符。
- chroot - 将目录设为路径查找 (path lookups) 的新根目录(需要超级用户权限)。
- close - 关闭文件句柄、管道 (pipe) 或套接字。
- closedir - 关闭由
opendir打开的目录句柄。 - connect - 连接到远程套接字。另请参阅
IO::Socket。 - continue - 定义
while或foreach循环中可选的尾随代码块,在重新评估条件之前执行。 - cos - 返回角度(弧度)的余弦 (cosine)。
- crypt - 单向加密 (one-way encryption),通常用于密码哈希 (password hashing)。现代应用应使用
Authen::Passphrase等模块以获取更强的哈希算法。 - dbmclose - 关闭 DBM 文件。大部分已被
DB_File或BerkeleyDB等模块取代。 - dbmopen - 打开 DBM 文件。大部分已被
DB_File或BerkeleyDB等模块取代。 - defined - 测试值、变量或函数是否已定义(不是
undef)。 - delete - 从哈希中删除键值对,或从数组切片 (array slice) 中删除元素。
- die - 抛出异常 (exception) 或以错误消息终止程序。
- do - 执行代码块 (block) 或文件。
do FILE类似于require,但不执行错误检查或导入符号。 - dump - 创建即时核心转储 (core dump)(很少使用,平台依赖)。
- each - 遍历哈希,返回键值对。注意:迭代顺序不保证。考虑使用
keys和循环来获得可预测的顺序。 - endgrent - 处理完组文件 (group file) 条目后进行清理。
- endhostent - 处理完 hosts 文件 (hosts file) 条目后进行清理。
- endnetent - 处理完 networks 文件 (networks file) 条目后进行清理。
- endprotoent - 处理完 protocols 文件 (protocols file) 条目后进行清理。
- endpwent - 处理完 passwd 文件 (passwd file) 条目后进行清理。
- endservent - 处理完 services 文件 (services file) 条目后进行清理。
- eof - 测试文件句柄是否已到达末尾。
- eval - 将字符串作为 Perl 代码执行 (
eval STRING) 或捕获代码块中的异常 (eval BLOCK)。对于错误处理至关重要。 - exec - 用另一个程序替换当前程序。
- exists - 测试哈希键是否存在(即使其值为
undef)。 - exit - 以指定的退出状态 (exit status) 终止程序。
- exp - 返回 e (欧拉数) 的指定次幂。
- fcntl - 提供文件控制系统调用 (low-level, system calls)(底层)。
- fileno - 返回文件句柄的文件描述符 (file descriptor)。
- flock - 对已打开的文件应用或移除建议锁 (advisory lock)。
- fork - 创建子进程 (child process)(在类 Unix 系统上)。
- format - 声明用于
write()的图片格式 (picture format)。在现代 Perl 中很少使用;请参阅模板引擎 (templating engines),如 Template Toolkit。 - formline - 由
format使用的内部函数(很少直接调用)。 - getc - 获取文件句柄的下一个字符。
- getgrent - 从组文件获取下一个组记录。
- getgrgid - 通过组 ID (GID) 获取组记录。
- getgrnam - 通过组名获取组记录。
- gethostbyaddr - 通过其网络地址获取主机记录。
- gethostbyname - 通过其名称获取主机记录。
- gethostent - 获取下一个 hosts 记录。
- getlogin - 返回当前登录名。
- getnetbyaddr - 通过其地址获取网络记录。
- getnetbyname - 通过其名称获取网络记录。
- getnetent - 获取下一个 networks 记录。
- getpeername - 获取套接字连接另一端的套接字地址。
- getpgrp - 获取进程组 ID (process group ID)。
- getppid - 获取父进程 ID (parent process ID)。
- getpriority - 获取当前进程优先级(nice 值)。
- getprotobyname - 通过名称获取协议记录。
- getprotobynumber - 通过编号获取协议记录。
- getprotoent - 获取下一个 protocols 记录。
- getpwent - 获取下一个 passwd 记录。
- getpwnam - 通过用户名获取 passwd 记录。
- getpwuid - 通过用户 ID (UID) 获取 passwd 记录。
- getservbyname - 通过名称获取 services 记录。
- getservbyport - 通过端口号获取 services 记录。
- getservent - 获取下一个 services 记录。
- getsockname - 获取给定套接字的套接字地址。
- getsockopt - 获取套接字选项。
- glob - 将模式扩展为文件名列表 (filename globbing)。
- gmtime - 将 Unix 时间戳转换为 GMT/UTC 的时间分量列表(年、月、日等)。
- goto - 将控制转移到带有标签的语句。在现代编程中强烈不推荐使用。
- grep - 从列表中过滤元素,对于这些元素,给定的代码块或表达式求值为真。
- hex - 将十六进制字符串转换为十进制数。
- import - 从模块将符号导入当前包的命名空间 (namespace)。
- index - 查找子字符串在字符串中第一次出现的位置。
- int - 返回数字的整数部分(向零截断)。
- ioctl - 执行 I/O 控制系统调用(底层,系统依赖)。
- join - 使用分隔符将列表元素连接成单个字符串。
- keys - 从哈希返回所有键的列表。
- kill - 向进程列表发送信号 (signal)。
- last - 提前退出最内层循环(类似于其他语言中的
break)。 - lc - 返回字符串的小写版本。
- lcfirst - 返回第一个字符小写的字符串。
- length - 返回字符串的长度(默认为字节数;如果对于具有 Unicode 属性的字符串使用了
use utf8或use feature 'unicode_strings',则为字符数)。 - link - 在两个文件名之间创建硬链接 (hard link)。
- listen - 监听套接字上的传入连接。另请参阅
IO::Socket。 - local - 为全局(包)变量创建临时、动态作用域的值。
my通常更推荐用于词法作用域 (lexical scoping)。 - localtime - 将 Unix 时间戳转换为本地时区的时间分量列表。
- lock - 获取变量、子例程或方法上的线程锁 (thread lock)(与
threads和threads::shared一起使用)。 - log - 返回数字的自然对数(以 e 为底)。
- lstat - 类似于
stat,但统计符号链接本身,而不是它指向的文件。 - m// - 匹配操作符,用于正则表达式 (regular expression) 匹配。也可以写成
//。 - map - 通过将代码块或表达式应用于每个元素来转换列表。
- mkdir - 创建目录。
- msgctl, msgget, msgrcv, msgsnd - System V IPC 消息队列函数。底层;考虑使用更高级的 IPC 机制,如套接字或通过 CPAN 模块访问消息队列系统(例如,Redis, RabbitMQ)。
- my - 声明词法作用域变量 (lexically scoped variables)。这是现代 Perl 中声明变量的标准方式。
- next - 跳到当前循环的下一次迭代(类似于其他语言中的
continue)。 - no - 在编译时取消导入符号或禁用 pragmas(例如,
no strict)。 - oct - 将八进制字符串(如果以
0x开头,则为十六进制)转换为十进制数。 - open - 打开文件、管道或进程进行 I/O。现代 Perl 通常使用带有词法文件句柄 (lexical filehandles) 的三参数形式(例如,
open my $fh, '<', $filename)。 - opendir - 打开目录以便使用
readdir读取。 - ord - 返回字符串中第一个字符的数字值(序号)。
- our - 声明包变量 (package variables),它们是词法作用域的,但可以通过其完全限定名访问。
- pack - 根据模板将值列表转换为二进制字符串表示。
- package - 声明一个命名空间(包)。
- pipe - 创建一对连接的文件句柄(进程间通信通道)。
- pop - 移除并返回数组的最后一个元素。
- pos - 使用
m//g时,查找或设置字符串的当前匹配偏移量。 - print - 输出字符串列表到文件句柄(默认为 STDOUT)。
- printf - 输出格式化字符串到文件句柄。
- prototype - 返回子例程的原型(应用程序员很少需要)。
- push - 将一个或多个元素添加到数组末尾。
- q// - 用单引号引用字符串,执行最小插值。
- qq// - 用双引号引用字符串,执行变量和转义序列的插值。
- qr// - 编译正则表达式,返回一个 regex 对象。
- quotemeta - 引用(转义)字符串中所有非字母数字字符,以便在 regex 中安全使用。
- qw// - Quote Words (引用单词):按空格将字符串分割成单词列表,将每个单词视为单引号引用。
- qx// - 在子 shell 中执行命令并返回其标准输出(与反引号 “ 相同)。
- rand - 返回介于 0 和其参数之间(如果没有参数则为 1)的伪随机浮点数。
- read - 从文件句柄读取指定数量的字节到缓冲区。
- readdir - 从
opendir打开的目录句柄读取目录条目。 - readline - 从文件句柄读取一行(通常隐式与
<FILEHANDLE>操作符一起使用)。 - readlink - 返回符号链接的值。
- readpipe - 执行系统命令并返回其标准输出(与
qx//或反引号相同)。 - recv - 通过套接字接收消息。
- redo - 重新开始当前循环迭代,不重新评估条件或执行
continue块。 - ref - 返回引用值的类型(例如,‘ARRAY’、‘HASH’、‘SCALAR’,或 blessed 引用的类名)。
- rename - 重命名文件。
- require - 如果尚未加载,则在运行时加载模块或文件。确保代码只编译一次。
- reset - 重置当前包中的变量(很少使用)。
- return - 退出子例程,可选地返回值。
- reverse - 反转列表元素的顺序,或字符串中字符的顺序(分别在列表或标量上下文)。
- rewinddir - 将由
opendir打开的目录句柄的当前位置重置到开头。 - rindex - 查找子字符串在字符串中最后一次出现的位置。
- rmdir - 移除空目录。
- s/// - 替换操作符,用于 regex 搜索和替换。
- scalar - 强制表达式在标量上下文 (scalar context) 求值。
- seek - 重新定位文件句柄的文件指针(用于随机访问 I/O)。
- seekdir - 重新定位由
opendir打开的目录句柄。 - select - 设置默认的输出文件句柄,或执行 I/O 多路复用 (multiplexing)(使用文件句柄的位掩码)。
- semctl, semget, semop - System V 信号量函数。底层;请参阅
IPC::SysV或考虑使用更高级的同步原语 (synchronization primitives)。 - send - 通过套接字发送消息。
- setgrent, sethostent, setnetent, setprotoent, setpwent, setservent - 准备遍历系统数据库文件(group, hosts 等)。
- setpgrp - 设置进程的进程组。
- setpriority - 设置进程的优先级(nice 值)。
- setsockopt - 设置套接字选项。
- shift - 移除并返回数组的第一个元素,如果在子例程内未指定数组,则从
@_移除。 - shmctl, shmget, shmread, shmwrite - System V 共享内存函数。底层;请参阅
IPC::SysV或IPC::Shareable。 - shutdown - 禁用套接字连接的读取、写入或两者。
- sin - 返回角度(弧度)的正弦 (sine)。
- sleep - 暂停执行指定秒数。
- socket - 创建套接字。另请参阅
IO::Socket。 - socketpair - 创建一对连接的(未命名)套接字。
- sort - 对值列表进行排序。可以接受自定义比较子例程或代码块。
- splice - 在数组的指定偏移量处添加或移除元素。
- split - 基于 regex 分隔符将字符串分割成子字符串列表。
- sprintf - 返回格式化字符串(类似于
printf但返回字符串而不是打印它)。 - sqrt - 返回数字的平方根。
- srand - 为伪随机数生成器 (
rand) 设定种子 (seed)。自动设定种子通常使显式调用不必要。 - stat - 返回文件的状态信息(模式、大小、时间戳等)。
- study - 分析字符串以优化后续对其进行的 regex 匹配。由于 regex 引擎的改进,在现代 Perl 中很少有益。
- sub - 声明子例程(函数),可能为匿名。
- substr - 提取或替换字符串的一部分。
- symlink - 创建符号链接 (symbolic link)。
- syscall - 执行任意系统调用(非常底层,平台依赖)。
- sysopen - 使用系统级打开标志打开文件句柄。
- sysread - 从文件句柄读取,不使用 Perl 的 I/O 缓冲。
- sysseek - 重新定位用于
sysread和syswrite的文件句柄的 I/O 指针。 - system - 执行系统命令。返回命令的退出状态。
- syswrite - 写入文件句柄,不使用 Perl 的 I/O 缓冲。
- tell - 返回文件句柄的当前位置(偏移量)。
- telldir - 返回由
opendir打开的目录句柄的当前位置。 - tie - 将变量绑定到对象类 (object class),允许通过对变量的操作触发方法调用。
- tied - 返回 tied 变量底层对象的引用。
- time - 返回自 Unix epoch(1970 年 1 月 1 日,UTC)以来的秒数。
- times - 返回当前进程及其子进程的经过的 CPU 时间。
- tr/// - 字符替换 (transliteration) 操作符。也可以写成
y///。 - truncate - 将文件截断到指定长度。
- uc - 返回字符串的大写版本。
- ucfirst - 返回第一个字符大写的字符串。
- umask - 设置或获取文件创建模式掩码 (mode mask)。
- undef - 使变量或函数未定义,使其值为
undef。 - unlink - 删除一个或多个文件(移除对文件的链接)。
- unpack - 根据模板将二进制字符串转换为值列表。
- unshift - 在数组开头添加一个或多个元素。
- untie - 解除变量与其 tied 对象类之间的绑定。
- use - 在编译时加载模块,导入符号并运行其
import方法。 - utime - 设置文件的最后访问和修改时间。
- values - 从哈希返回所有值的列表。
- vec - 将字符串视为位向量 (bit vector),允许测试或设置单个位。
- wait - 等待任意子进程终止。
- waitpid - 等待特定子进程终止。
- wantarray - 如果当前子例程调用在列表上下文 (list context),则返回 true;在标量上下文为 false;在 void 上下文为
undef。 - warn - 向 STDERR 打印警告消息。
- write - 使用声明的
format写入格式化记录到文件句柄。很少使用;请参阅模板引擎。 - -X (File Tests) - 一组测试文件属性的一元操作符(例如,
-r用于可读,-x用于可执行,-f用于普通文件)。 - y/// -
tr///(字符替换) 操作符的别名。