2014-03-05 101 views
0

我在一個開源項目中找到這段代碼。該路徑將是一個UNIX路徑並作爲參數傳遞。我想知道下面的代碼實際上對我做了什麼:

$path =~ s|/$||; 

謝謝!

* *更新:

謝謝你告訴我答案,不過,我想知道在共同的正則表達式匹配的代碼重寫怎麼會?

我找不出用豎條包圍的那一塊。

第二個豎槓是什麼意思?謝謝!

+1

它剝離了尾隨的'/'字符。 –

+0

'perldoc perlop' – toolic

+1

您可以使用除'/'以外的字符作爲分隔符。在這種情況下,使用'|'來代替'/',所以正則表達式中的'/'不必轉義。編寫'|/$ ||'避免必須編寫'/// $ //'。 –

回答

1

此代碼將刪除在$path的字符串末尾找到的斜槓/。所以,如果你有

$path = "foo/bar/"; 

你會得到

$path = "foo/bar"; 

這是對s///運算符,其中定界符已從/改爲|,例如變化s|||。使用s///操作員,您可以將斜槓/更換爲幾乎任何其他字符。例如

s!foo!bar! 
s{foo}{bar} 
s#foo#bar# 
s?foo?bar? 

改變分隔符的原因通常是這樣一個字符出現在正則表達式中,它在這裏執行。如果你的正則表達式沒有改變分隔符,它看起來像這樣:

s/\/$// 

這是不可讀的。

+0

我懂了!謝謝! –

+0

如果字符串以斜槓和換行符結尾,它將刪除兩者。 – ikegami