免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2011 | 回复: 4
打印 上一主题 下一主题

请问对这两行的理解? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-23 14:54 |只看该作者 |倒序浏览
my $CMDNAME = ($0 =~ m#.*/(.*)$#) ? $1
                                                              : $0;

这里的#  #,也就是/ /的意思。即

my $CMDNAME = ($0 =~ m/.*/(.*)$/) ? $1
                                                           : $0;

对于CMD后面的参数是怎样进行处理的?
(m -- 多行也包括在内)
($ -- 一直到命令行的行尾)
((.*) -- 也就是 $1)
但是和前面的部分连在一起,.*/(.*)  -- 是什么意思啊?还有那两个等号又怎么理解?

论坛徽章:
0
2 [报告]
发表于 2008-05-23 15:08 |只看该作者

回复 #1 whn3375 的帖子

.*/(.*)  表示用/分开,你这里用#。。。#代替了/,自然而然,/将不被解释,看下面的例子,将明白什么意思了:
$0="hel/ld/mm" ;
$com=($0=~m#.*/(.*)$#)?$1: $0;
print $com;

$0="hel/ldmm" ;
$com=($0=~m#.*/(.*)$#)?$1: $0;
print $com;

$0="helldmm" ;
$com=($0=~m#.*/(.*)$#)?$1: $0;
print $com;


输出将分别是mm
         ldmm
         helldmm

论坛徽章:
0
3 [报告]
发表于 2008-05-23 15:33 |只看该作者
$0是脚本名字
这类似于实现shell中的basename功能
比如你调用脚本是通过绝对路径调用的
/xx/yy/zz
则结果$COMNAME = zz
反之,你如果直接打zz,则匹配不成功,所以
$COMNAME = $0; ($0 =zz)
所以还是得到$COMNAME=zz

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
4 [报告]
发表于 2008-05-24 22:58 |只看该作者
原帖由 whn3375 于 2008-5-23 14:54 发表
my $CMDNAME = ($0 =~ m#.*/(.*)$#) ? $1
                                                              : $0;

这里的#  #,也就是/ /的意思。即

my $CMDNAME = ($0 =~ m/.*/(.*)$/) ? $1
                                                           : $0;

对于CMD后面的参数是怎样进行处理的?
(m -- 多行也包括在内) # 这里m是match的缩写,表示模式匹配,不表示多行
($ -- 一直到命令行的行尾)
((.*) -- 也就是 $1)
但是和前面的部分连在一起,.*/(.*)  -- 是什么意思啊?还有那两个等号又怎么理解?

第一个=用来赋值,第二个=和~一起即=~用来改变匹配对象,.*/(.*)的解释看楼上几位的。

论坛徽章:
0
5 [报告]
发表于 2008-05-24 23:09 |只看该作者
c语言里的? : ;啊 ,判断$0里面有没有/, 如果有就取出最后一个/后面的字符赋给command
如果没有就将$0整个赋给command
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP