perl 写的下面一段程序,麻烦解释一下~(以前学过C,C++等,所以没有慢慢看perl语法,求解释,谢谢)

subtrim{my@out=@_;for(@out){s/^\s+//;s/\s+$//;}returnwantarray?@out:$out[0];}... sub trim {
my @out = @_;
for (@out) {
s/^\s+//;
s/\s+$//;
}
return wantarray ? @out : $out[0];
}
展开
 我来答
百度网友c9e795dda
2013-04-02 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1149万
展开全部
首先, 这个 sub 是用来去掉每行头和尾的空白字符, 然後,
根据你希望回传的方式, 给你回传数列 (array) 或单一字串
如:
my @this = ( " Hello World!! ", "\they there\t", " Are you alright? " ) ;

my @str = trim ( @this ) ; # 因为左边是 @str, 所以 wantarray 将会为真!
# 这样就给你回传数组 @str = ( "Hello World!!", "hey there", "Are you alright?" )

my $str = trim ( " blah blah blah " ) ; # 因为左边是 $str, 所以 wantarray 将会为假
# $str = 这样就只回传单一字串 "blah blah blah"

my $str = trim ( @this ) ; # 因为左边是 $str, 所以 wantarray 将会为假
# 这样子 $str = "Hello World"

sub trim {
my @out = @_; # 先将参数复制一份, 原因是, 你不能直接改 @_ 里的资料
for (@out) { # 现在开始续笔资料看
s/^\s+//; # 移除字串中"开头"的空白字符
s/\s+$//; # 移除字串中"结尾前"的空白字符
}
return wantarray ? @out : $out[0];
# wantarray 为真时( 看上例 ), 给你回传整个 array
# wantarry不为真时, 就只回传第一笔参数给你, 这里也假设了, 你只有一个参数输入

}
阳光上的桥
2013-04-02 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
这个就是删除所有参数的首位空格,使用的正则表达式,核心部分是:
s/^\s+//;
s/\s+$//;
^表示开始,$表示结果,\s表示空白

最后返回的时候是个和C语言一样的?:三元运算,根据wantarray的值返回参数数组或者第一个参数

my @out = @_;
定义局部数组,并且值为参数数组

for (@out) {
这个相当于for each,针对数组的每个元素进行循环
追问
谢谢你~
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式