回答
他們的意思是Perl的最初設計用於處理文本文件,並有許多功能,可以輕鬆:
- Perl有字符串處理許多功能:
substr
,index
,chomp
,length
,grep
,sort
,reverse
,lc
,ucfirst
,... - Perl根據數值的使用方式自動在數字和字符串之間進行轉換。 (例如,您可以從文件中讀取字符串'100'並添加一個字符串,而無需首先執行字符串到整數轉換)
- Perl會自動處理平臺編碼轉換和平臺編碼轉換(例如Windows上的CRLF)和邏輯換行符(「\ n」)在您的程序中。
- 正則表達式集成在語法中,而不是單獨的庫。
- Perl的正則表達式是功能和功能的「黃金標準」。
- Perl有完整的Unicode支持。
Python和Ruby還具有良好的文本處理功能。 (尤其是Ruby從Perl中獲得了很多靈感,就像Perl從其他許多語言中無恥地借用一樣)。詢問哪個更好,沒有什麼意義。使用你喜歡的。
雖然有些人來自$ _,但我認爲它屬於那個清單。你有一個「當前話題」或你正在做的事情,並應用各種步驟的想法是非常好的。 – 2009-12-11 19:14:51
我不會說Perl自動處理行尾。我認爲你在寫入Windows中的文本文件時感到困惑。除非你告訴Perl該做什麼,否則讀取返回的數據不會做任何特別的事情。 – 2009-12-11 19:15:57
@brian:平臺換行順序和邏輯「\ n」之間的轉換髮生在讀和寫(當然忽略'binmode')。我知道你很清楚這一點,所以我覺得你的評論很混亂。我想我可以說「Perl可以讓你用邏輯換行符來思考,而不用擔心你的操作系統使用的任何順序」而沒有提到它是如何實現的。 – 2009-12-11 19:55:44
與C/C++/Java相比,Perl在文本解析方面非常出色。
Igor應該擴展他的回答,注意到當Perl出現時,文本處理不是一項簡單的任務。 20年後,人們並不欣賞現在一切都有PCRE的痛苦,等等。 – 2009-12-11 19:07:38
Perl也適用於ETL或批處理運動。這是拿起文件的最小代碼量;通過split
推送它以獲得map
,在記錄上執行一些邏輯業務操作,並將其寫回到磁盤。
我想這是更多的數據處理,然後數據解析,但數據處理是批量數據解析。
不要把Perl的優勢說成是另一種語言的缺陷。 Perl對文本處理非常有用,但這並不意味着Ruby或Python很糟糕。
當人們談論Perl「很好解析」時,他們主要回應Perl的歷史;它是在重型文本處理不容易的當天發明的。試着在C或C++中做一些這樣的事情(Java還沒有被髮明,或者!)。當天,拉里試圖用sed和awk來完成他的工作,但卻遇到了限制。他製作了一個工具,使文本更容易處理。
Perl對文本處理任務來說仍然非常好,但現在很多其他語言也是如此。
這可能是因爲人們已經習慣了它的構建內容,如perl documentation中所述,所以許多人將文本文件解析與Perl關聯已成爲司空見慣。不排除Ruby或Python,它只是更多的家喻戶曉的名字恕我直言。
Perl是針對掃描任意文本文件,從這些文本文件中提取信息以及根據該信息打印報告而優化的語言。對於許多系統管理任務來說,這也是一種很好的語言。該語言旨在實用(易於使用,高效,完整)而不是美觀(小巧,優雅,極簡)。
- 1. 當人們說(寫)生命週期測試時,他們的意思是什麼?
- 2. 當他們說LINQ是可組合的時候,它們是什麼意思?
- 3. 當我們說一個類被加載時,我們的意思是什麼?
- 4. MIPS異常它們是什麼意思
- 5. 當他們說JavaScript是單線程時,這意味着什麼?
- 6. Linux:VI - 當有人說「Command mode key sequence」時,他們在說什麼?
- 7. 他們最擅長的是什麼 - C和C++
- 8. 是什麼意思:=在oracle中的意思是當我們使用它時
- 9. 堆棧跟蹤是什麼意思,當他們有兩個?
- 10. 當用前端PHP或其他方式說後端Java時,人們是什麼意思?
- 11. 我們的意思是什麼?要麼 ???
- 12. 當他們說React受XSS保護時,這意味着什麼?
- 13. 當他們說'有狀態'時,這意味着什麼?
- 14. 當他這樣說時,我的精靈是什麼意思?
- 15. 解析是什麼意思?
- 16. 當我們說同步(實例字段)時它是什麼意思..?
- 17. TestNG的:什麼是我們的意思是,當我們說運行時配置靈活TestNG中
- 18. 什麼「你應該可以`chown`他們」是什麼意思?
- 19. 當蘋果談到「記憶」時,它們是什麼意思?
- 20. Apache錯誤,它們是什麼意思?
- 21. Linux命令,它們是什麼意思?
- 22. 當人們說他們在後端運行'scala'時,他們可以在什麼情況下討論?
- 23. 奇怪的aptana亮點。他們的意思是什麼?
- 24. 是什麼意思,當我在Perl
- 25. 邏輯地址是什麼意思,它們是什麼樣的?
- 26. 解析XML是什麼意思?
- 27. 什麼是OS X會話類型,它們是什麼意思?
- 28. 這兩個PHP錯誤是什麼意思?我如何解決他們?
- 29. 當他們在文檔中說「關鍵」時,YouTube意味着什麼?
- 30. 有人可以解釋他們的意思是list.pushback文檔(不壞迭代器)
對我來說,這表明他們對分析知之甚少,可能對Python和Ruby等語言知之甚少......更不用說諸如lex/flex和yacc/bison等工具。 它表明它們被固定的正則表達式和從簡單數據格式中提取模式(它們與「解析」相混淆)。 最後,它強烈建議那些人在面對真正的解析問題時,會創建一個半成品和脆弱的代碼,通過他們簡單的炮製測試用例,同時爲那些依賴該代碼進行實際工作的人造成痛苦。 – 2009-12-11 21:03:52
對於人們可能合理地期望用perl手中的那種單調乏味的一次性任務來說,一半的脆弱代碼是完美的*編寫BNF語法來解析日誌文件聽起來並不像很好的利用時間。 – Shog9 2009-12-12 01:16:25
有很多東西沒有語法,Perl給了你很多工具來處理這個問題。正則表達式不是Perl的工具箱中唯一的東西。 – 2009-12-12 01:30:02