2014-07-14 124 views

回答

3

perldoc perlrun

  • -p指「運行每行的表達,並打印出結果」
  • -i意思是「編輯代替輸入文件」
  • -e裝置「下一個參數是Perl表達式來評估「

對於表達式本身:

  • !標記是s(替代)運算符的分隔符。 任何可以使用非字母數字字符 - 無論在s之後。
  • "字符並不意味着什麼特別的東西,它們只是要替換的文本的一部分,並且是替代品。

因此,我們有:

  • s:替代
  • !:(分隔符)
  • "code.google.com/:文本,以查找
  • !:(分隔符)
  • "camlistore.org/third_party/code.google.com/:替換文本
  • !:(分隔符)

所有手段:

  • 對於文件
  • 查找文本"code.google.com/
  • 在各條線和(如果找到)與"camlistore.org/third_party/code.google.com/
更換
1

劉海!只是替代正則表達式的替代正則表達式s///

由於搜索和替換的內容包含正斜槓,因此使用不同的分隔符以避免必須全部轉義。感嘆號有時用於此目的s!!!,但我的首選替代品是大括號:s{}{}

至於代碼是做什麼的,它將在找到的文件中用"camlistore.org/third_party/code.google.com/替換對"code.google.com/的所有引用。

1

這是一個非常簡單的搜索和替換。 s/PATTERN/REPLACEMENT/運算符可以查看一個字符串是否與正則表達式模式匹配,並替換與替換字符串的值匹配的部分。

由於有時/字符是一個不方便的分隔符(如處理Web URI),Perl允許您將它們交換爲其他字符,在這種情況下,他們選擇使用!

-p開關導致Perl繞着正在討論的代碼處理線路。 -i開關允許在處理輸入行時就地編輯輸入行,並可選擇將原始文件保存在另一個文件中。 (詳見perldoc perlrun

所以這段代碼所做的就是用"camlistore.org/third_party/code.google.com/替換包含"code.google.com/的行。