perlpython
PHP:PHP是一種開放源代碼的腳本編程語言。主要用於Web伺服器的伺服器端應用程序,用於動態網頁設計,是一種嵌入HTML頁面中的腳本語言。
Python
(發音:[
'paiθ(ə)n;
(US)
'paiθɔn
]),是一種面向對象的解釋性的計算機程序設計語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python
具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。
Perl借取了C、sed、awk、shell
scripting以及很多其他程序語言的特性。
Perl
一般被稱為「實用報表提取語言」(PracticalExtraction
andReportLanguage),雖然有時被稱做「病態折中垃圾列表器」(PathologicallyEclectic
Rubbish
Lister)。它是術語,而不僅僅是簡寫,Perl的創造者,LarryWall提出第一個,但很快又擴展到第二個。那就是為什麼「Perl」沒有所有字母都大寫。沒必要爭論那一個正確,Larry
兩個都認可。
你也可能看到「perl」,所有的字母都是小寫的。一般,「Perl」,有大寫的
P,是指語言本身,而「perl」,小寫的
p,是指程序運行的解釋器。
Perl的正式網站是
www.perl.org。
『貳』 perl和python選哪個
就 語法來看,Python比Perl優美得多。Perl裡面充滿了像$!和$_這類的天書標記,初學的時候每讀一段代碼,就會碰到幾個從來沒見過的標記,然 後過兩個星期,他們又以全新的面目出現在我面前。在我看來,這決不是什麼緊湊,只是瘋狂。不過同樣的尼采,有的人看到的是偉大的哲學家,有的人看到的只是 一個瘋子。
類庫,Python的類庫不如Perl的多。但是這很大程度上是因為Python沒有一個像CPAN這樣的類庫集散地。其實Python的類庫也是很全的,只是要找。SourceForge是一個,此外還有freshmeat。就我自己的經驗,有些類庫是無意中找到的。比方說,我看IBM的 developer network,看到一個twisted,安裝的時候讀了它的README,發現還有pycrypto,和pyopenssl類庫。
如 果你覺得Python的開發效率還不及C++,那隻能說你對Python還是太不熟悉,不過有C++的底子,用不了多久你就會闖過這一關的。其實 Python的文本處理能力一點都不比Perl遜色。它的re模塊的思路同java的regex很像,而中文處理則要用到codecs。真正學懂之後,你 會覺得Python模塊的邏輯性很強。不像Perl,雖然很方便,但是一個一個模塊之間沒有什麼必然的聯系。
關 於Python的大型項目,最知名的就是Zope,然後有twisted(它既是一個類庫,也是一個framework)。此外還有 gadfly,mesa(其實這兩個是Zope的子項目,但是Perl沒有這個重量級的產品吧),以及Chandler。這些都是純Python的程 序。
『叄』 perl和python各自擅長什麼領域
Perl 設 計之初就是為了方便編寫復雜高效的系統腳本,它也是應該最為廣泛的腳本編程語言。它在編程方面相當於瑞士軍刀,對字元、文本文件處理能力很強,以前要求 shell+sed+awk+C才能完成的任務,只需perl腳本就可以完成了。而且應用領域一直在拓寬,支持面向對象程序設計。
Python 面向對象的動態公共語言,適於腳本編程和快速開發,它最顯著的特點是作為編譯語言(如C)和腳本語言(如perl)之間的橋接語言,它具有的強大功能,可擴充性及面向對象的特徵使其成為大規模應用程序開發工具。
關於強類型Perl語言中,數據的類型,取決於數據所處的上下文。
Python語言中,數據類型,是數據自身確定的。Python因此一般被認為是強類型語言,而Perl則不是,不過Perl的愛好者一般不關心這種事情。實際上,換個角度來看,Python是固定的數據類型,變化的函數類型;而 Perl則是固定的函數類型,變化的數據類型。都很有意思。
關於 內置基礎類型
Perl的基礎類型叫做scalar,這是為了和後面的array和hash做區別。scalar可以是數字,也可以是字元串。基本上說,scalar非此即彼;換句話說,scalar既是數字,又是字元串。scalar到底是字元串,還是數字,完全取決於使用scalar的上下文,如果是一個處理字元串的函數,那麼它是字元串;如果是一個處理數字的函數,那麼它是數字。Perl會盡一切努力完成它們之間的轉化,無論在你看來有多麼荒誕。 Perl中,所有scalar都以$開頭,所有以$開頭的都是scalar。 Python的基礎類型,同樣,不是數字,就是字元串。但是,不可能既是數字,又是字元串。Python會判斷變數到底是數字,還是字元串,以此來選擇怎麼解釋函數;如果它找不到一個合適的解釋,那麼Python會拋出異常。一般來說,這種策略能夠取悅一部分程序員,同時讓另外一部分人感覺很不爽。
關於 復合類型
Perl有兩種復合類型:array和hash。Python有三種復合類型:tuple, list, dict。 Python中的tuple+list,完全對應於Perl中的array;因此不存在誰提供的 類型更豐富這樣的問題。
關於 創建Perl中創建array可以通過()。但是()到底是否會創建一個array,這取決於所處的上下文;換句話說,只有當上下文要求一個array時,()才會產生一個array。事實上,()可能創建一個scalar,也可能創建一個hash,這完全取決於上下文。
關於存取單個元素
Perl中我們可以用$foo[$bar]來表示foo這個array中的第$bar個元素。特別詭異的是,這個foo和$foo中的foo是完全不相乾的,這回應了前面提到的Perl原則,一個符號到底什麼意思,取決於上下文。並且,在$foo[$bar]這樣一個上下文中,$bar會被Perl 搞成整數,無論它本來是什麼。 Perl中,用一個越界的idx訪問array是完全正常的,Perl會悄悄的擴展array。Python中,tuple或者是list,兩者都通過lst[idx]這樣的形式存取其中的元素。 Python中,用一個越界的idx訪問array會觸發一個異常。 Python中,提供了強大的slice功能。
關於做為整體的list
Perl中,用@開頭的名字表示整個array,據說是因為@是array的字頭。但是,又根據Perl的原則,@foo這樣的array也可以被使用到一個需要scalar的環境中去,Perl會盡力把@foo轉換成一個scalar,一般來說,這個scalar就是@foo的長度。
『肆』 perl和python區別是什麼
python與perl區別在於:
python使用fetchall()函數後,一次獲取所有行。
perl則是每讀取一次獲取一條記錄。
關於縮進:
python很注重縮進的,有時看起來是對齊的,但是還是會報縮進錯誤。此種情況,一般是有的是TAB縮進,有的是空格縮進。
所以,一般同一個腳本中,使用同一處方式縮進(要麼全TAB,要麼全空格)。
相關推薦:《Python教程》
關於{} []
perl中的數組,哈希都是使用()qw生成 ,只不過是數組使用[]索引,哈希使用{}索引。
python()表示元組,[]表示數組 ,{}表示字典,即哈希。
關於函數:
perl使用{}和C一樣,但是形參,都是用特殊變數@_ 來獲取。關健字 sub ##PERL中大量使用特殊變數。
python 是使用縮進來區分函數語句塊的,關健字 def。
關於python版本問題:
舊版本2.0的,print("這裡面有中文") 列印在屏幕上會是亂碼,列印到文件中則是正常的。
##在舊版本2.0,print如果有列印中文到屏幕上最好不要加()括弧。 列印到文件則無所謂。
關於print
python --- 字元串後面可以不用加n 自動換行。
per --- 不會自動換行,需加上n。
關於執行SQL語句。
python與perl相同,使用變數來接收時,它是個二維數組,每一條查詢結果,即為一個一維數組,每個欄位,即為一維數組中的元素。
## 注意:
如果python執行SQL返回一行數據,則它為一維數組,返回多行數據,則為二維數組。
『伍』 Perl,R,Python在生物信息學中是怎樣的角色
應該說Python/Perl是相互替代的腳本語言,但個人推薦用Python, 雖然很多老的生物信息軟體是用Perl,Python學習曲線好,功能也更強大,是發展趨勢。這兩個語言主要是做數據預處理、文本處理和格式轉換、對演算法效率要求不高的分析軟體開發,系統管理和pipeline搭建等工作。R語言主要的優勢是大量的統計包的支持,數據統計分析中非常常用。Python和R有良好的介面。關於繪圖很多人用R,其實Python的Matplotlib的繪圖效果比它漂亮很多,也更強大。對pipeline的搭建shell編程更適合,是一個不可缺少的技能。與資料庫相關的工作需要用到SQL, linux : 操作系統,是基礎。 生物信息對Linux的要求其實並不高,並不是要做系統開發者或管理員,只需要會用就行。復制粘貼、處理數據、安裝軟體等。生物信息軟體:標准數據分析。 生物信息學的數據格式已經基本標准化,大部分工作可以直接用軟體完成。Perl和Python:處理個性化問題、軟體之間的對接。 這兩門語言至少應該熟練掌握一門自己寫程序用,另外一門要能看得懂。 寫點小腳本感覺差別不大,但是perl寫大程序不合適。 很多人認為python是趨勢,但至少截止目前更多生信軟體是用perl寫的。 所以,如果剛開始學,建議主打python, 看懂perl。R :數據處理、統計、繪圖、數據分析。 R語言的數據結構跟其他語言差異較大、而且總感覺語法比較散,不好記。但是R的軟體包卻異常強大。數據處理的reshape2, dplyr;繪圖的ggplot2;還有Bioconctor里的幾千個包。不得不會。
『陸』 perl 翻譯為 python
1. Perl 中的標量
a. Perl 中的標量在Python 中對應為數字類型和字元串類型
Perl 的標量是字元串還是數值會根據上下文自動判斷,但察沖是Python 不會這樣做。
下面的代碼是你在Perl 中習以為常的操作
[plain] view plain在CODE上查看代碼片派生到我的代碼片
my ($string, $number) = ("1", );
$number = $string + "1"; # $string 和"1" 都譽沒枯被解釋為數值
say $number;
$string = $number.1; # $number 和1 都被解釋為字元串
say $string;
但是Python 中你必須顯式的指定數據類型
[python] view plain在CODE上查看代碼片派生到我的代碼片string = "1" number = int (string) + 1 # 必須顯式轉換為數值類型
print (number)
string = str (number) + "1" # 同樣必須顯式轉換為字元串
print (string)
b. Perl 的標量不支持下標運算,但是Python 的字元串可以
Python 中你可以很方便的用下標索引字元串(而且和Perl 中的列表一樣也支持用慶洞負數做反向索引)
[python] view plain在CODE上查看代碼片派生到我的代碼片
s = "A string" print (s[2:])
但是Perl 的標量就無法這樣操作,相同的操作必須用列表切片完成
[plain] view plain在CODE上查看代碼片派生到我的代碼片
$_ = "A string";
say ((split //)[2..split //]);
c. Perl 中的heredoc 式標量賦值在Python 中可以使用三引號運算符完成
[plain] view plain在CODE上查看代碼片派生到我的代碼片
@_ = <Everthing is
in
the array
END
say "@_";
下面是等價的Python 代碼,注意第一行是緊跟三引號運算符之後的
[python] view plain在CODE上查看代碼片派生到我的代碼片string = '''''Everthing is
in
the array
'''
print (string)
2. Perl 中的列表
a. Perl 中的列表Python 中對應為列表和元組
下面是Python 中倒序排序一個列表的操作
[python] view plain在CODE上查看代碼片派生到我的代碼片
my_list = ["Hello", "Python"]
my_list.append ("World")
my_list += ["!"]
print (my_list)
my_list.sort ();
my_list.reverse ();
for string in my_list:
print (string)
對應的Perl 同性質操作的版本
[plain] view plain在CODE上查看代碼片派生到我的代碼片
@_ = qw/Hello Perl/;
push @_, 'World';
@_ = (@_, '!');
print "@_\n";
@_ = reverse sort @_;
say for @_;
b. 常用的splice 操作在Python 中可以用過index () 方法和del 操作完成
下面是Perl 中常用的splice 操作
[plain] view plain在CODE上查看代碼片派生到我的代碼片
@_ = qw/Hello Perl !/;
splice @_, 2, 0, "World"; # 插入元素
say "@_";
my @removed = splice @_, 1, 2; # 提取一段元素並在原列表刪除
print "@_\n@removed\n";
Python 中對應的操作
[python] view plain在CODE上查看代碼片派生到我的代碼片
my_list = ["Hello", "Python", "!"]
my_list.insert (2, "World") # 插入元素
print (my_list)
removed = my_list[1:2] # 提取一段元素
del my_list[1:2] # 並在原列表刪除
print (my_list)
print (removed)
注意:Python 中元組和列表的區別
元組創建後是只讀的,但是列表隨時都可以被修改。3. Perl 中的哈希
a. Perl 中的哈希Python 中對應為字典和集合
一個Perl 哈希按照鍵值升序遍歷的操作如下
[plain] view plain在CODE上查看代碼片派生到我的代碼片
my %hash = (
"first" => 1,
"second" => 2,
"third" => 3 );
say "$_ => $hash{$_}" for sort keys %hash;
Python 中代碼如下(注意定義變為花括弧)
[python] view plain在CODE上查看代碼片派生到我的代碼片
my_hash = {
"first" : 1,
"second" : 2,
"third" : 3 }
items = sorted (my_hash.items (), key=lambda e:e[1], reverse=False)
for item in items:
print (item[0], ':', item[1])
注意:Python 中集合與字典的不同之處
(a) 僅包含鍵,但是沒有值
(b) set 可變,但是frozenset 不可變(如其名)4. Python 強類型的判斷和賦值
一個非常大的不同之處:Perl 中賦值號默認的行為是拷貝,但是Python 中賦值號會創建一個對象的引用。
另外,因為和弱類型的Perl 不同,Python 是一門強類型語言,所以也有判斷對象類型的必要。
下面代碼演示了這些區別,首先是一段Python 代碼
[python] view plain在CODE上查看代碼片派生到我的代碼片
lst = [1, 2, 3]
lst2 = lst # lst2 是lst 的一個引用
print (lst)
lst2[1] = 2.5 # 所以修改lst2 也會引起lst 的變化
print (lst)
lst3 = .deep (lst) # lst3 是lst 的一個深拷貝
lst3[1] = 2 print (lst) # 修改lst3 不會引起lst 的變化
# 因為Python 是強類型語言,所以需要類型判斷操作
if lst == lst2: # 如果s 和s2 值相同
print ("lst equal to lst2")
if lst is lst2: # 如果s 和s2 是指向同一個對象的引用
print ("lst and lst2 is the same")
if type (lst) is type (lst3): # 如果s 和s3 類型相同
print ("lst and lst3 has same type")
下面是與之完全等價的Perl 代碼,對比一下你就會很快了解其中的差別
[plain] view plain在CODE上查看代碼片派生到我的代碼片
my @lst = (1..3);
my $lst2 = \@lst; # lst2 是lst 的一個引用
say "@$lst2";
$lst2->[1] = 2.5; # 所以修改lst2 也會引起lst 的變化
say "@$lst2";
my @lst3 = @lst; # lst3 是lst 的一個深拷貝
$lst3[1] = 2;
say "@lst"; # 修改lst3 不會引起lst 的變化
=pod
因為Perl 是弱類型語言,所以不需要類型判斷操作
但是Perl 中仍然可以做這樣的操作——雖然沒什麼意義
=cut
say "lst equal to lst2"
if @lst == @$lst2; # 如果s 和s2 值相同
say "lst and lst2 is the same"
if \@lst == $lst2; # 如果s 和s2 是指向同一個對象的引用
say "lst and lst3 has same type"
if ref \@lst eq ref \@lst3; # 如果s 和s3 類型相同
5. Perl 中的「上下文」
上下文的判斷幾乎已經成了一名Perl 用戶不可或缺的第六感,一個顯而易見的例子是當你定義一個列表
[plain] view plain在CODE上查看代碼片派生到我的代碼片
my @lst = (1..3);
當你循環遍歷的時候,你深知把for 循環
[plain] view plain在CODE上查看代碼片派生到我的代碼片
say for @lst; # 列表上下文
替換為While 循環
[plain] view plain在CODE上查看代碼片派生到我的代碼片
say while @lst; # 標量上下文
究竟會得到什麼災難性的後果。
但是在Python 中你不必擔心這個:Python 對於數據類型的解釋很明確,不會因為上下文環境不同而改變,當你定義一個列表
[python] view plain在CODE上查看代碼片派生到我的代碼片
lst = [1, 2, 3]
之後,你永遠不必擔心在什麼特殊的上下文中lst 會被Python 解釋為數值3。
面向對象編程1. 幾點明顯的異同
Perl 和Python 的面向對象給人的感覺是後者明顯比前者更加規范,下面是自己感受最明顯的幾點異同。
a. 真的是面向對象么?1). Perl 中的「面向對象」更像是「面向過程」的文字游戲:類通過包實現、方法通過包中定義的函數實現、類的繼承和方法的重載通過@ISA 列表查找循序實現、私有方法通過指向匿名函數的my 引用實現(因為my變數是本文件可見的)、運算符重載通過指向函數的引用實現、對象中成員變數的訪問通過bless 到類名的引用實現……這樣如果說有好處,那就是編程可以非常靈活——你可以用一個父類的多個子類共同繼承出一個類(例如從哺乳動物中人類和貓類繼承出一種新生物),Perl 完全對這種行為不在意,只要你確信這種近親結婚的方式真的是你需要達到的目的。當然壞處顯而易見——你可以輕而易舉把代碼寫的糟糕透頂。所以Perl 的「面向對象」給人的感覺只是「面向過程」的另一種玩法——面向過程的本質沒變,但是面向對象的效果達到了。2). Python 中的「面向對象」比Perl 要嚴謹和規范許多,非常類似於Java,如果你熟悉Java 或者C++,那麼你會很好理解Python 的面向對象編程。
b. 包和類1). Perl 中兩者完全等價,一個包就是一個類(pm 是Perl 模塊的意思,但是它又被叫做包,而包就是類的意思 ← ←)。2). Python 中一個包可以包含多個模塊,一個模塊可以包含多個類。
c. 靜態方法
Perl 和Python 中靜態方法都是第一個參數不是類的引用的方法,但是稍有不同:1). Perl 中靜態方法第一個參數是類名,可以通過bless 新的引用到類名來操作對象類型(例如你在構造方法里做的那樣)。2). Python 中靜態方法完全無法操作對象類型。
d. 私有方法:1). Perl 中的私有方法通過my 變數只有當前文件可見的性質,用保存匿名函數的my 引用來達到「私有」的目的(「面向對象」的文字游戲)。2). Python 中吧以「__」開頭的方法都當作私有方法,通過方法名會變成"_類名__方法名" 的形式來避免其他類調用該方法,但是你仍然可以通過手動變換後的方法名直接調用私有方法。
e. 方法的傳參:1). Perl 中一般將散列的引用bless 到類名,所以傳參可以十分靈活,如果構造函數允許,參數個數和位置根本無關緊要,但是隨之造成的問題就是可能引發混亂。2). Python 中方法聲明無法把無默認值的參數放在有默認值的參數後面,但是因為實參可以通過給出參數名手動顯式指定,所以次序也可以無關緊要。
f. 運算符重載:1). Perl 通過use overload 模塊指定方法的引用來達到重載運算符的目的。2). Python 中通過一組特殊名稱的方法來重載運算符。
g. 父類方法重載:1). Perl 中通過@ISA 列表的搜索順序來達到重載父類方法的目的(子類的同名方法會被優先搜索到),並且可以顯式SUPER 偽類訪問被覆蓋的基類方法(就如你經常在析構方法中做的一樣)。2). Python 的重載更加正式,形式非常類似於C++。
h. 繼承:1). Perl 的繼承只是操作了@ISA 列表,子類中沒有的方法會在@ISA 中尋找方法名,因此這種行為得到的結果和面向對象編程的繼承相同。UNIVERSAL 是所有類的祖先類,提供了isa 方法用來測試繼承關系。2). Python 的繼承類似於C++,顯式指定了要繼承的父類,object 類是所有類的祖先類,提供issubclass 方法用來測試繼承關系。2. 一個演示異同的例子
下面的兩個例子都會有相同的輸出,演示了Perl 和Python 中類的構造、析構、公有方法、私有方法、運算符重載、繼承、父類方法重載等。
下面是預期的輸出
[plain] view plain在CODE上查看代碼片派生到我的代碼片=My name's Lucy, 2 years old. Adoption me please.
+I am hungry offen.
-My name's Leia, 1 years old. My host is iSpeller.
+I hate milk but my host give me offen.
-My name's Lucy, 2 years old. My host is iSpeller.
+I hate milk but my host give me offen.
『柒』 Linux運維學perl還是python好
同樣是懶散運維表示。選python。兩種我都曾經用過。
1。可以肯定使用py的人越來越多,因為入門相當容易,這適合你的腳本被其他人理解,或者共同維護。
2。就功能性來說,其實腳本語言都差不多。但是py有更好的調試機制,perl語法可以說約束太寬,我是覺得語法太隨意,規范化的py看起來更簡單易懂,py在面向對象的寫法上更容易。
3。兩個官方文檔我都看過,perl內容沒有py完整,perl有些地方很簡單的帶過。當然py2跟3有些差別,但是不大,perl6跟perl5的差別更大呢。
4。py作為很多開發項目的輔助語言現在來說會更流行一些,不管是github還是其他地方。所以,你能找到的幫助,解決問題的思路也比perl廣。
『捌』 請問如何在python中調用perl腳本
1.確保perl已經安裝並且在PATH中。
2.in python:
import subprocess
subprocess.call(["perl", "/path/to/your-script.pl"])
如果腳本本身有可執行許可權,直接這樣也行:
import subprocess
subprocess.call(["/path/to/your-script.pl"])
『玖』 為什麼說perl的正則表達式功能比Python強大
最大的分別就是.. 速度!
從各種的測試都顯示, perl 的正則處理依然是最快的 (不只比 python) , 下面的實測可以去看看
https:斜斜stuffivelearned點org斜doku.php?id=programming%3ageneral%3aphpvspythonvsperl
其實 perl 本來就是正則的鼻祖, 它最則拆初的開發的原意很大程度也是為了正則
至於為甚麼比 python 快其實不難想像
Perl 不是 OO 語孫鉛棗言(雖然有 OO 的玩法), 所以用到正則時, 正接就開始跑, 不用繼承一堆有的沒的屬性和方法. 至於 python 還要先把字串 compile 了做一個物件, 才開始做正則, 在底層自然又多了一重功夫
Python 的正則要靠模塊來完成, Perl 的正則卻已在 perl 解釋器的心臟里, 誰會起動的更快就很明顯了. 當然, 除了 C Python 還算最快之外, 其他如 JPython, Iron Python 這些要靠 framework 來起動的就必然更慢了
另外就是... 連擊和助攻, perl 的正則很可以直接當成 expression (=~ 和 !~ ) 來用, 如:
useutf8;上面幾例, 試問用 python 要寫多少行才做到用樣的效果呢.. 不過, 這多少語言層次的問題, 姑且另作別論了.
$wantId="陳大文";
die"帳號不能用奇怪激答字元"unless$wantId=~/^[wd]+$/;
#或者
%user=(
1=>{Name=>"王子"},
2=>{Name=>"小王子"}
3=>{Name=>"王妹"});
@姓王的=grep{$user{$_}{Name}=~/^王/}keys%user;
#@姓王的=(1,3)
#又或者
%mask=(1=>"M",2=>"X",3=>"B");
$password="321";#普通密碼
$maskedPw=undef;#加密密碼
$password=~s/(.)/$maskPw.=$mask($1)/eg;
#maskedPw="BXM"
『拾』 perl 、shell、python三種腳本語言那種好學、易用
perl、shell、python三種腳本語言的區別:
1、適用不同:shell是操作linux的基本,是必須學的。學shell就是學linux命令。perl有強大的正則表達式支持,對於文本處理非常強悍,玩linux不得不學。python作用一種面向對象的,能作為linux腳本的語言,學好之後能幫你很好地完成工作。
2、特點不同:Perl是一種能完成任務的語言。從一開始,Perl就設計成可以把簡單工作簡單化,同時又不失去處理困難問題能力的語言。它可以很容易操作數字,文本,文件和目錄,計算機和網路,特別是程序的語言。
這種語言應該很容易運行外部的程序並且掃描這些程序的輸出獲取感興趣的東西。而且它還應該很容易能把這些你感興趣的東西交給其它程序做特殊的處理。當然,這種語言還應該很容易在任何現代的操作系統上可以移植地編譯和運行。
shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,並且可以立即得到響應),或者以shellscript(非交互)方式執行。
shellscript是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shellscript是命令行命令簡單的組合到一個文件裡面。Shell基本上是一個命令解釋器,類似於DOS下的command.com。
它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourneshell(sh)和Cshell(csh)。
Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格,Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。
3、優點不同:perl,用作文本處理比較好,可以作為系統的輔助工具。shell,用作系統維護、操作等方面。python,功能強大,模塊多、跨平台能力好,完全面向對象,尤其適用做大型腳本程序的開發和快速開發。
(10)perlpython擴展閱讀:
erl比shell+sed+awk更強大,但學習兩者並不沖突,通常是學習shell做為腳本編程的入門基礎。而Python在應用領域則與前兩者有很大的差別,無太大的可比性。面向不同的任務,可以只需用到其中的一種,也可能三種都要用到,所以究竟該學誰不學誰,需要由面對的任務來決定。
總之,shell是基礎,其他是進階輔助。
Shell腳本通常都是以.sh為後綴名的,這個並不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已。所以,以後你發現了.sh為後綴的文件那麼它一定會是一個shell腳本了。
test.sh中第一行一定是「#!/bin/bash」它代表的意思是,該文件使用的是bash語法。如果不設置該行,那麼你的shell腳本就不能被執行。』#』表示注釋。後面跟一些該腳本的相關注釋內容以及作者和創建日期或者版本等等。