我在一個開源項目中找到這段代碼。該路徑將是一個UNIX路徑並作爲參數傳遞。我想知道下面的代碼實際上對我做了什麼:
$path =~ s|/$||;
謝謝!
* *更新:
謝謝你告訴我答案,不過,我想知道在共同的正則表達式匹配的代碼重寫怎麼會?
我找不出用豎條包圍的那一塊。
第二個豎槓是什麼意思?謝謝!
我在一個開源項目中找到這段代碼。該路徑將是一個UNIX路徑並作爲參數傳遞。我想知道下面的代碼實際上對我做了什麼:
$path =~ s|/$||;
謝謝!
* *更新:
謝謝你告訴我答案,不過,我想知道在共同的正則表達式匹配的代碼重寫怎麼會?
我找不出用豎條包圍的那一塊。
第二個豎槓是什麼意思?謝謝!
此代碼將刪除在$path
的字符串末尾找到的斜槓/
。所以,如果你有
$path = "foo/bar/";
你會得到
$path = "foo/bar";
這是對s///
運算符,其中定界符已從/
改爲|
,例如變化s|||
。使用s///
操作員,您可以將斜槓/
更換爲幾乎任何其他字符。例如
s!foo!bar!
s{foo}{bar}
s#foo#bar#
s?foo?bar?
改變分隔符的原因通常是這樣一個字符出現在正則表達式中,它在這裏執行。如果你的正則表達式沒有改變分隔符,它看起來像這樣:
s/\/$//
這是不可讀的。
我懂了!謝謝! –
如果字符串以斜槓和換行符結尾,它將刪除兩者。 – ikegami
它剝離了尾隨的'/'字符。 –
'perldoc perlop' – toolic
您可以使用除'/'以外的字符作爲分隔符。在這種情況下,使用'|'來代替'/',所以正則表達式中的'/'不必轉義。編寫'|/$ ||'避免必須編寫'/// $ //'。 –