关于perl中的提取语句

时间:2013-08-21 08:24:58

标签: perl

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

我在浏览脚本时遇到过这个声明并试图理解它。甚至谷歌搜索RHS并没有返回任何有用的东西。有人可以帮我理解这句话的含义吗???

哪两个标量受影响?

2 个答案:

答案 0 :(得分:2)

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

这个成语实际上包含两个操作:

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

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

答案 1 :(得分:0)

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

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

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