Perl删除前导和拖尾空白(删除左右空格、空白字符)
Perl没有内置trim函数,可用正则表达式快速实现:s/^\s+//去左空白,s/\s+$//去右空白,s/^\s+|\s+$//g去两端。也可封装为子程序或使用CPAN模块如String::Util、Text::Trim。
很多编程语言都内置了 ltrim、rtrim 或 trim 函数,专门用来去掉字符串两头的空白字符。但 Perl 偏偏没有——因为正则表达式太直接了,一行替换就能搞定。实际上,这个需求简单到成了帕金森琐碎定理里常被拿来举例的话题。当然,CPAN 上也有不少模块封装了这些功能,不过自己写起来也不费事。

左侧整理
ltrim(或者叫 lstrip)从字符串左侧删除空白字符:
复制代码 代码如下:
$str =~ s/^s+//;
从字符串开头 ^ 开始匹配一个或多个空白字符(s+),然后替换成空字符串。
右侧整理
rtrim(或者 rstrip)从字符串右侧删除空白字符:
复制代码 代码如下:
$str =~ s/s+$//;
匹配一个或多个空白字符(s+)直到字符串末尾 $,替换为空。
整理两端
trim 同时删除两端空白:
复制代码 代码如下:
$str =~ s/^s+|s+$//g
将上面两个正则用或运算符 | 连起来,加上 /g 修饰符进行全局替换(反复匹配)。
封装在函数里
如果不想每次手写这些正则,可以先把它们打包成子程序:
复制代码 代码如下:
sub ltrim { my $s = shift; $s =~ s/^s+//; return $s };
sub rtrim { my $s = shift; $s =~ s/s+$//; return $s };
sub trim { my $s = shift; $s =~ s/^s+|s+$//g; return $s };
用起来也很直观:
复制代码 代码如下:
my $z = " abc ";
printf "<%s>n", trim($z); #
printf "<%s>n", ltrim($z); #
printf "<%s>n", rtrim($z); # < abc>
String::Util
要是实在不想拷贝那些代码,装个 CPAN 模块也行。比如 String::Util 提供了 trim 函数:
复制代码 代码如下:
use String::Util qw(trim);
my $z = " abc ";
printf "<%s>n", trim( $z ); #
printf "<%s>n", trim( $z, right => 0 ); #
printf "<%s>n", trim( $z, left => 0 ); # < abc>
默认它清理两侧,不需要额外参数。不过个人觉得,自己实现 ltrim 和 rtrim 更清晰,一眼就能知道在做什么。
Text::Trim
另一个模块 Text::Trim 提供了三个函数,但它的设计比较“Perl 风格”——甚至到了有点危险的地步。如果你用返回值(比如赋给变量或在 print 中使用),它会返回整理后的字符串,原变量不变:
复制代码 代码如下:
use Text::Trim qw(trim);
my $z = " abc ";
printf "<%s>n", trim($z); #
printf "<%s>n", $z; # < abc >
但如果你在空白上下文中调用它(即不接收返回值),它就会直接修改参数,行为类似于 chomp:
复制代码 代码如下:
use Text::Trim qw(trim);
my $z = " abc ";
trim $z;
printf "<%s>n", $z; #
这种写法很简洁,但要注意上下文区别,否则容易出 bug。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













