2013-04-18 51 views
0

比賽我測試下面的代碼Perl的正則表達式提取使用括號

#! /usr/bin/perl 

use strict; 
use English; 

#this code extracts the current scripts filename 
#by removing the path from the filepath 

my $Script_Name = $PROGRAM_NAME; 

${Script_Name} =~ s/^.*\\//; #windows path 

#${Script_Name} =~ s/^.*\///; #Unix based path 

print $Script_Name; 

,我不明白爲什麼這些括號中提取的比賽不使用A/R修正。任何人都可以解釋爲什麼以及如何工作或指向我的一些文檔?

回答

0

你開始有點糊塗了!

大括號沒有什麼區別。 ${Script_Name}$Script_Name相同。

你的代碼首先拷貝從$PROGRAM_NAME的腳本文件$Script_Name的完整路徑。

然後替換消除一切直到幷包括最後的反斜槓,只留下文件名。

,如果你想修改一個字符串,並把修改成另一種結果的/r修改將被使用,所以你可以在一個步驟編寫代碼爲

$Script_Name = $PROGRAM_NAME=~ s/^.*\\//r