Skip to content

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/// (字符替换) 操作符的别名。