perl中的正则表达式(my $me = $0) =~ s#.*[\/|\\]##; 是什么意思?

看到一个perl脚本的一开头有这样两行代码:(my$me=$0)=~s#.*[\/|\\]##;#in$0allesbiszumletzten'/'oder'\'loes... 看到一个perl脚本的一开头有这样两行代码:
(my $me = $0) =~ s#.*[\/|\\]##; # in $0 alles bis zum letzten '/' oder '\' loeschen
(my $mePref = $me) =~ s#(.*).pl#$1#;
不知道这两个正则表达式是什么意思?表达式中的#表示什么?

另外脚本下面的usage中有这么一段话:
NAME
$me - Test control tool for SCT of PHY TX. (runs only in cmd window, not in cygwin shell !!!)
$me是用来控制该脚本在cmd中运行,而不是在cygwin中运行,是这个意思吗?为什么?

在线坐等大神解答!!!
展开
 我来答
匿名用户
推荐于2016-10-11
展开全部
(my $me = $0) =~ s#.*[\/|\\]##;
把所有 /或者\ 前面(包括/或者\)的字符去掉

(my $mePref = $me) =~ s#(.*).pl#$1#;
表示去掉.pl后缀名。

在s///操作符中,可以用#、!等来作为分隔符。
(my $mePref = $me) =~ s#(.*).pl#$1#;
也可以写为(my $mePref = $me) =~ s/(.*).pl/$1/;

$me是用来控制该脚本在cmd中运行,而不是在cygwin中运行。是这个意思。
追问
太感谢你啦!
我还有两个不明白的地方:
1. s//操作是删除的意思吗?
2. 脚本里面对于$me的操作只有(my $me = $0) =~ s#.*[\/|\\]##; 这一句,
为什么这样写之后$me就能控制脚本在cmd中运行,而不在cygwin中运行呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式