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中运行,是这个意思吗?为什么?
在线坐等大神解答!!! 展开
(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中运行,是这个意思吗?为什么?
在线坐等大神解答!!! 展开
1个回答
推荐于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中运行。是这个意思。
把所有 /或者\ 前面(包括/或者\)的字符去掉
(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中运行呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询