关于 perl 中的提取语句


(my $batch_name = $batch_dir) =~ s#.*/##;

我在浏览脚本时遇到了这个陈述,并试图理解它。即使谷歌搜索 RHS 也没有返回任何有用的信息。 有人可以帮我理解这句话的意思吗???

两个标量中的哪一个受到影响?

它从$batch_dir变量的副本中删除以/结尾的最长前缀,例如。 从文件系统路径生成叶名称或提取正确转义的 URL 的脚本、查询和片段部分。

成语实际上包括 2 个操作:

 my $batch_name = $batch_dir;
 batch_name =~ s#.*/##;

如果没有括号,替换将应用于$batch_dir$batch_name将设置为从替换运算符返回的值,成功状态(至少发生了 1 次替换 => 1undef其他(。

Parens () 的优先级高于 =~ ,因此 parens 中的指令在之前执行。

首先完成分配my $batch_name = $batch_dir;,然后进行替换$batch_name =~ s#.*/##;

只有$batch_name变量受替换的影响。

最新更新