2013-08-21 32 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變量被替代的影響。