;
用作語句分隔符,因此在語句末尾放置多個;
可以,因爲它只是添加空語句。語句末尾的Perl分號
我碰到這個代碼在年底有多個;
但刪除它們導致錯誤:
$line =~s;[.,]$;;;
應該是相同
$line =~s;[.,;]$;
,但事實並非如此。這是怎麼回事?
;
用作語句分隔符,因此在語句末尾放置多個;
可以,因爲它只是添加空語句。語句末尾的Perl分號
我碰到這個代碼在年底有多個;
但刪除它們導致錯誤:
$line =~s;[.,]$;;;
應該是相同
$line =~s;[.,;]$;
,但事實並非如此。這是怎麼回事?
在代碼中只有最後;
是語句分隔符。其他人是正則表達式分隔符,其中替代運算符采取。一個更好的方式來寫是這樣的:
$line =~s/[.,]$//;
因爲你必須在你的語句中的語句分隔符和正則表達式的分隔符,你不能刪除任何尾隨;
在您提供的片段中;
被用作search-n-replace正則表達式的分隔符。
$line =~s;[.,]$;;;
相當於
$line =~ s/[.,]$//;
只是要清楚 - 是的,這是合法的。不,你應該永遠不要在你的代碼中這樣做,除非你想要一個瘋狂的精神病患者把你的頭撞了進來。而且,我的意思是下一個開發者必須維護你的代碼。 – DVK
分號不是普遍的聲明分隔器;它也可以是一個帶引號的字符串或正則表達式分隔符。或者甚至是一個變量名稱,就像Abigail在這個經典的JAPH中所寫的那樣,標題是「事情不像他們看起來那樣」。
$; # A lone dollar?
=$"; # Pod?
$; # The return of the lone dollar?
{Just=>another=>Perl=>Hacker=>} # Bare block?
=$/; # More pod?
print%; # No right operand for %?
在第二條語句中,您做的不僅僅是刪除分號,而是在中間添加了一個分號。 –
[s //:「任何非空白分隔符都可以代替斜線。」](http://perldoc.perl.org/perlop.html#s%2fPATTERN%2fREPLACEMENT%2fmsixpodualgcer) –
很明顯,無論誰寫它認爲它有高娛樂價值 – Zaid