Perl

2018-02-24 15:18 更新

X分鐘速成Y

其中 Y=perl

源代碼下載:?learnperl-cn.pl

Perl 5是一個(gè)功能強(qiáng)大、特性齊全的編程語言,有25年的歷史。

Perl 5可以在包括便攜式設(shè)備和大型機(jī)的超過100個(gè)平臺(tái)上運(yùn)行,既適用于快速原型構(gòu)建,也適用于大型項(xiàng)目開發(fā)。

# 單行注釋以#號(hào)開頭

#### Perl的變量類型

#  變量以$號(hào)開頭。
#  合法變量名以英文字母或者下劃線起始,
#  后接任意數(shù)目的字母、數(shù)字或下劃線。

### Perl有三種主要的變量類型:標(biāo)量、數(shù)組和哈希。

## 標(biāo)量
#  標(biāo)量類型代表單個(gè)值:
my $animal = "camel";
my $answer = 42;

# 標(biāo)量類型值可以是字符串、整型或浮點(diǎn)類型,Perl會(huì)根據(jù)需要自動(dòng)進(jìn)行類型轉(zhuǎn)換。

## 數(shù)組
#  數(shù)組類型代表一列值:
my @animals = ("camel", "llama", "owl");
my @numbers = (23, 42, 69);
my @mixed   = ("camel", 42, 1.23);

## 哈希
#  哈希類型代表一個(gè)鍵/值對(duì)的集合:

my %fruit_color = ("apple", "red", "banana", "yellow");

#  可以使用空格和“=>”操作符更清晰的定義哈希:

my %fruit_color = (
        apple  => "red",
        banana => "yellow",
        );
# perldata中有標(biāo)量、數(shù)組和哈希更詳細(xì)的介紹。 (perldoc perldata).

# 可以用引用構(gòu)建更復(fù)雜的數(shù)據(jù)類型,比如嵌套的列表和哈希。

#### 邏輯和循環(huán)結(jié)構(gòu)

# Perl有大多數(shù)常見的邏輯和循環(huán)控制結(jié)構(gòu)

if ( $var ) {
    ...
} elsif ( $var eq 'bar' ) {
    ...
} else {
    ...
}

unless ( condition ) {
                   ...
               }
# 上面這個(gè)比"if (!condition)"更可讀。

# 有Perl特色的后置邏輯結(jié)構(gòu)
print "Yow!" if $zippy;
print "We have no bananas" unless $bananas;

#  while
  while ( condition ) {
                   ...
               }

# for和foreach
for ($i = 0; $i <= $max; $i++) {
                   ...
               }

foreach (@array) {
                   print "This element is $_\n";
               }

#### 正則表達(dá)式

# Perl對(duì)正則表達(dá)式有深入廣泛的支持,perlrequick和perlretut等文檔有詳細(xì)介紹。簡單來說:

# 簡單匹配
if (/foo/)       { ... }  # 如果 $_ 包含"foo"邏輯為真
if ($a =~ /foo/) { ... }  # 如果 $a 包含"foo"邏輯為真

# 簡單替換

$a =~ s/foo/bar/;         # 將$a中的foo替換為bar
$a =~ s/foo/bar/g;        # 將$a中所有的foo替換為bar

#### 文件和輸入輸出

# 可以使用“open()”函數(shù)打開文件用于輸入輸出。

open(my $in,  "<",  "input.txt")  or die "Can't open input.txt: $!";
open(my $out, ">",  "output.txt") or die "Can't open output.txt: $!";
open(my $log, ">>", "my.log")     or die "Can't open my.log: $!";

# 可以用"<>"操作符讀取一個(gè)打開的文件句柄。 在標(biāo)量語境下會(huì)讀取一行,
# 在列表環(huán)境下會(huì)將整個(gè)文件讀入并將每一行賦給列表的一個(gè)元素:

my $line  = <$in>;
my @lines = <$in>;

#### 子程序

# 寫子程序很簡單:

sub logger {
    my $logmessage = shift;
    open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
    print $logfile $logmessage;
}

# 現(xiàn)在可以像內(nèi)置函數(shù)一樣調(diào)用子程序:

logger("We have a logger subroutine!");

使用Perl模塊

Perl模塊提供一系列特性來幫助你避免重新發(fā)明輪子,CPAN是下載模塊的好地方( http://www.cpan.org/ )。Perl發(fā)行版本身也包含很多流行的模塊。

perlfaq有很多常見問題和相應(yīng)回答,也經(jīng)常有對(duì)優(yōu)秀CPAN模塊的推薦介紹。

深入閱讀

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)