2013-08-21 23 views
0
(my $batch_name = $batch_dir) =~ s#.*/##; 

我在阅读脚本并试图理解它时遇到了这个声明。即使用谷歌搜索RHS也没有返回任何有用的东西。有人能帮助我理解这句话的意思吗?关于perl中的提取语句

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

回答

2

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

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

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

没有该取代会被施加到$batch_dir$batch_name将被设置为从所述替代操作者返回的值在括号中,成功状态(至少1取代已发生=>1,undef其他)。

0

Parens ()的优先级高于=~,所以parens里面的指令在之前执行。

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

只有$batch_name变量被替代的影响。