為 Java 程序員準備的 10 分鐘 Perl 教程

jopen 11年前發布 | 14K 次閱讀 Java Java開發

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

1.從基礎開始

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

# comment starts with "#"

the name is hello.pl

print "Hello Perl!";</pre>

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"; }</pre>輸出結果:

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";

}</pre>

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 <span>chomp</span><span>(</span>$aline); <span>print</span> $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;</pre>

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 );</pre>哈系類:

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

printHash(\%twoLettersCount);</pre>

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分鐘”,我還將根據評論持續更新本文。
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!