為Java程式設計師準備的10分鐘Perl教程

oschina發表於2013-11-10

  這10分鐘教程並不是Java和Perl的比較。目標是探索作為Java開發人員如何快速學習Perl。以下是一些從我的角度來看的關鍵筆記。

  1.從基礎開始

  不像java,Perl不需要“main”方法作為入口點。要執行一個簡單的Perl程式如下:

# comment starts with "#"
# the name is hello.pl
print "Hello Perl!";
perl hello.pl

  2. 日期型別

  在Perl中的日期型別是非常簡單,它有3種型別:標量,陣列和Hash。

  標是一個單值,它基本上可以是任何其他比陣列或雜湊。

  陣列是一個陣列,可以包含不同型別的元素,如整數,字串。

  雜湊基本上是像Java的HashMap中。

  將下面的程式碼結合所有的使用情況。

#claim a hash and assign some values
my %aHash;
$aHash{'a'}=0;
$aHash{'b'}=1;
$aHash{'c'}=2;
$aHash{'d'}=3;
$aHash{'e'}=4;
 
#put all keys to an array
my @anArray = keys (%aHash);
 
#loop array and output each scalar
foreach my $aScalar (@anArray){
	print $aScalar."\n";
}

  輸出結果:

e
c
a
b
d 

  如果你想對陣列進行排序,你可以簡單地使用類似下面的排序功能:

foreach my $aScalar (sort @anArray){
	print $aScalar."\n";
}

  3. 條件、迴圈表示式

  Perl為條件和迴圈語句準備了if, while, for, foreach等關鍵字,這與Java非常類似(switch除外)。

  詳情請見下面的程式碼:

#if
my $condition = 0;
if( $condition == 0){
	print "=0\n";
}elsif($condition == 1){
	print "=1\n";
}else{
	print "others\n";
}
 
 
#while
while($condition < 5){
	print $condition;
	$condition++;
}
 
for(my $i=0; $i< 5; $i++){
	print $i;
}
 
#foreach
my @anArray = ("a", 1, 'c');
foreach my $aScalar (sort @anArray){
	print $aScalar."\n";
}

  4.檔案的讀寫

  下面這個例子向我們展示瞭如何讀寫檔案。這裡請注意">"和">>"之間的區別,">>"在檔案末尾追加內容,">"建立一個新的檔案儲存資訊。

#read from a file
my $file = "input.txt";
open(my $fh, "<", $file) or die "cannot open < $file!";
while ( my $aline = <$fh> ) {
	#chomp so no new line character
	chomp($aline);
	print $aline;
}
close $fh;
 
# write to a file
my $output = "output.txt";
open (my $fhOutput, ">", $output) or die("Error: Cannot open $output file!");
print $fhOutput "something";
close $fhOutput;

  5.正規表示式

  Perl中有兩種使用正規表示式的方法:m和s。

  下面的程式碼在$str上應用了正規表示式。

$str =~ m/program(creek|river)/

  如果$str的內容是“programcreek”,表示式將會返回true。這也可以被用於條件判斷或迴圈。

  6.傳值/引用的語法

  在Perl中沒有必要定義方法/函式,但如果你這麼做了,那將大大提高程式碼的模組化和可充用性。但我們需要對引數的傳遞非常小心。

  你可以直接傳遞一個標量,但如果傳遞的是陣列或雜湊類就需要特別的當心。

  陣列:

my @testArray = (1, 3, 2);
 
#In sub
sub processArrayByReference($) {
	my $arrayref = shift;
	my @array    = @$arrayref;
	#...
}
 
#In sub processarray:
sub processArrayByValue($){
	my @array = @_;
	#...
}
 
processArrayByValue(@testArray);
 
processArrayByReference( \@testArray );

  哈系類:

sub printHash($) {
	my %hash = %{ shift() };
	for my $key ( sort keys %hash ) {
		my $value = $hash{$key};
		print "$key => $value\n";
	}
}
 
printHash(\%twoLettersCount);

  7.一些例項

  1).遍歷字串中的每個字元。

my @lineCharArray = split('',$aline);
 
foreach my $character (@lineCharArray){
	print $character."\n";
}

  2).建立一個包含26個字母的陣列。

  你可以簡單地實現這個功能並且無需迴圈26次。

my @charArray = ('a'..'z' );
my @twoCharArray = ('aa'..'zz');

  以上是第一個版本的“10分鐘”,我還將根據評論持續更新本文。

  原文地址:http://www.programcreek.com/2012/09/10-minutes-perl-tutorial-for-java-developer/

相關文章