我代码中的这一行从字符串中截取 .csh 并返回其余部分。有人能解释一下它的每个部分的作用吗?
($eachJOBID = $eachScriptNoPath) =~ s/\.csh// ;
我代码中的这一行从字符串中截取 .csh 并返回其余部分。有人能解释一下它的每个部分的作用吗?
($eachJOBID = $eachScriptNoPath) =~ s/\.csh// ;
这是关于 Perl 语法的内容。其部分内容如下:
将标量变量中的值
$eachScriptNoPath
复制到标量变量中$eachJOBID
。该语句括在括号中,用于对赋值操作进行分组,并控制下一部分赋值和正则表达式匹配之间的优先级。当值被复制到时
$eachJOBID
,将根据正则表达式匹配和操作来评估该值。此表达式匹配值的任何部分,即字符串“.csh”,并且不替换该字符串。即删除该字符串。因此最终的值
$eachJOBID
将不包含“.csh”。即,作业 ID 将是删除“.csh”的脚本文件名。如果左边的赋值语句没有用括号括起来,那么 Perl 很可能会
$eachScriptNoPath =~ s/.csh//
因为运算符优先级而首先执行,并且会将正则表达式语句的布尔成功/失败 (1/0)$eachJOBID
而不是预期的作业 ID 字符串放入其中。