(my $batch_name = $batch_dir) =~ s#.*/##;
我在浏览脚本时遇到了这个陈述,并试图理解它。即使谷歌搜索 RHS 也没有返回任何有用的信息。 有人可以帮我理解这句话的意思吗???
两个标量中的哪一个受到影响?
它从$batch_dir
变量的副本中删除以/
结尾的最长前缀,例如。 从文件系统路径生成叶名称或提取正确转义的 URL 的脚本、查询和片段部分。
成语实际上包括 2 个操作:
my $batch_name = $batch_dir;
batch_name =~ s#.*/##;
如果没有括号,替换将应用于$batch_dir
,$batch_name
将设置为从替换运算符返回的值,成功状态(至少发生了 1 次替换 => 1
, undef
其他(。
Parens ()
的优先级高于 =~
,因此 parens 中的指令在之前执行。
首先完成分配my $batch_name = $batch_dir;
,然后进行替换$batch_name =~ s#.*/##;
只有$batch_name
变量受替换的影响。