2013-07-05 70 views
0
$_ =~ s/\#N\/A//g; 

它用A替換\ 3N \是perl中的這些特殊字符嗎?對不起,我不知道如何查看這個語法。這個替換是幹什麼的?

+0

這是一個perl正則表達式。嘗試http://perldoc.perl.org/perlre.html獲取perl正則表達式的更多細節。此外,谷歌的'perl operator =〜'可能會給你一些線索。 –

+0

@MichaelKohne,Google會默默地忽略'=〜'部分。 – doubleDown

+0

@doubleDown - 有趣。不知道爲什麼我早點擊球,現在我得到perlop,它告訴=〜運算符是什麼,並引用perlre。所以它可以工作。 –

回答

5

它正在從字符串$_中刪除#N/A。

\#N比賽#N(逃避#

\/A比賽/A(逃避/

可以簡化如何混亂,這看起來通過改變替代分隔符:

$_ =~ s|#N/A||g; 
3

像獵人McMillen說,它將從默認變量中刪除#N/A

但你可以編寫更具可讀性和更短:

s!#N/A!!g; 
1

由於@Hunter麥克米倫提到的,這只是正常的正則表達式替換特殊字符轉義。它可能會更好寫成

s|#N/A||g 

s{#N/A}{}g 
0

在達米安康威的Perl的最佳實踐,使正則表達式的可讀性,他建議:

s{ \# N \/ A }{}gmsx; 

即:

  1. 在圖案和更換周圍使用大括號。
  2. 通過/ x開關使用空格分隔圖案的各個部分。
  3. 反斜槓轉義非字母數字字符,即使它們不是元字符。