perl語法總結

以下是依據perlintro總結的Perl基本語法

  • Perl 語法-- by gouven
    • 基本語法
      • 與C一樣地,每條語句以分號;結尾
      • 註釋符爲#
    • 操作符see perlop
      • 算術:+ - * /
      • 數值比較:< <= > >= == !=
      • 字符串比較: lt le gt ge eq ne
      • 邏輯: && and || or ! not
      • 其他
        • . 字符串拼接
        • x 字符串“乘法”
        • .. 範圍操作符,用於創建一組數字
        • = 賦值
        • 支持操作符與=組合,如 += x=
    • 數據類型see perldata
      • scalar
        • 變量使用美元符$進行引用,如$name
        • 分類
          • 字符串
            • (雙引號支持變量解析及特殊字符如\n):"abc", 'abc';
            • 雙引號內支持變量解析,以及特殊字符如 \n;
            • 支持“乘法”表示:'a' x 3 等同於'aaa';
          • 數值
            • 整形:123, -12
            • 浮點:1.23
          • 引用(reference)see perlreftut, perlref
      • array
        • 變量使用 @名字 表示,如@array
        • 組內元素類型可以混合
        • $#array 表示最後一個元素到下標
        • @array 在scalar上下文中表示數組元素個數,如 if(@array < 10) {}
        • 數組元素使用使用$+數組下標(從0開始)進行引用,如$name[0]
        • 初始化: @num = (1,2,3);
        • 內置函數
          • sort @a 返回排序後到數組
          • reverse @a 返回倒序後到數組
      • hash
        • 變量使用 %table 表示
        • hash值使用 $table{'key'} 表示
        • 初始化
          • %table = (1, 'one', 2, 'two');
          • %table = ( 1 => 'one', 2 => 'two',);
        • 獲取所有的key: keys @table
        • 獲取所有的value: values @table
    • 變量作用域
      • 默認全局
      • my聲明到作用域在{}內,如if() {my $foo = 1;}
    • 分支 & 循環see perlsyn
      • if
        • if(cont){} elsif(cont2) {} else {} #必須有{}
        • print 'foo' if $bar;
      • unless
        • unless(not_true) {};
        • print 'foo' unless $bar;
      • while
        • while(its_true) {}
        • print 'foo' while its_true;
      • until
        • until(its_false) {};
        • print 'foo' until its_false;
      • for
        • for($i = 0; i < 10; $i++) {}
      • foreach
        • foreach (@array) {print $_;} #實際是foreach $iter (@array) {print $iter;}
        • print "$_\n" foreach 1 .. $max; #每次獲取到放在$_,不支持放到其他變量中
        • foreach my $key (keys %table) {print "$key : ${$key}\n";}
      • 總結
        • 關鍵字在前的,需要把條件放在()中;關鍵字在後到,不需要{}
        • 不支持switch/case
    • 函數sub
      • sub your_sub_name { my (arg1, arg2) = @_; return $retval;}
      • 函數參數在數組 @_ 中
      • 無return時返回值爲最後一個表達式到值
    • 文件操作
      • 打開
        • open(my $in, '<', 'file.txt'); # to readopen my $in, '<file.txt'; #another way
        • open(my $out, '>', 'file.txt'); # to read
        • open(my $append, '>>', 'file.txt'); # to append
        • my $line = <$in>; # scalar context
        • my @all_lines = <$in>; # list context
        • while(<$in>) {print "line: $_\n";}
      • 寫: print $out, "feed some text";
      • 關閉: close $in; close $out;
    • regex
      • 判斷匹配
        • if(/foo/) {} # if $_ contains 'foo'
        • if($bar =~ /foo/) {} # if $bar contains 'foo'
      • 簡單的字符串替換
        • s/foo/bar; # replace foo with bar in $_;
        • $line =~ s/foo/bar; # replace foo with bar in $line;
      • more details in perlrequick, perlretut, perlre
    • 模塊
      • MyModule.pm #文件名以大寫開頭,擴展名一般爲pm
      • MyModule.pm內容
        • package MyModule;
          • 聲明命名空間,名字必須與文件名相同
        • use strict;
        • see http://perlmonks.org/?node_id=102347
      • perl -V #查看當前perl配置,包括@INC數組
      • perl -I/path/to/module/testd xxx.pl #臨時添加模塊目錄到@INC
    • 學習資料
      • man perl會提供各種perldoc指引說明
      • perldoc
        • perldoc perldoc
        • perldoc perltoc
        • perldoc -f func
        • perldoc -q regex
      • 社區
        • www.perl.org
        • www.cpan.org
        • www.perlmonks.org
    • 其他
      • 良好的編碼風格/習慣
        • use strict;
        • use warnings;

Perl 語法-- by gouven//mm2html.xsl FreeplaneVersion:freeplane 1.3.0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章