(my $batch_name = $batch_dir) =~ s#.*/##;
我在浏览脚本时遇到过这个声明并试图理解它。甚至谷歌搜索RHS并没有返回任何有用的东西。有人可以帮我理解这句话的含义吗???
哪两个标量受影响?
答案 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
变量会受到替换的影响。