perl學習筆記

來源:互聯網
上載者:User

標籤:perl學習筆記

#!/usr/bin/perl
my $tmp = "ye_qing";
my @name = split("_",$tmp);
my $list = "==$name[0]==$name[1]==\n";
print $list;
my @ye=(1,2,3,4);
my @qing=(1,2,@ye,4,5,6);
$scount = @qing;
print "==sum:$scount==\n";

print "[email protected]==\n";
$count=1;
while($count<[email protected]){
  print("==age:$qing[$count-1]==\n");
  $count++;
}
@sortList = sort(@qing);
print "--sort:[email protected]\n";
######### 將去掉鍵盤輸入字串最後一個字元--分行符號號
@list=("rabbit","12345","yeqing");
chop(@list);
print "[email protected]$list[0]--$list[1]--$list[2]--\n";
######### 將數組和字串按照::串聯起來
$string = join("::",@list,"hello world!!!");
print "--$string--\n";
######## 將字串按照::分割成數組
@arr=split(/::/,$string);
print "[email protected]====\n";
######## hash
%h = (‘a‘=>1,‘b‘=>‘_‘,c=>‘hello‘);
print "hash:--$h{a}--$h{b}--$h{c}--\n";
##### 刪除hash中一個元素
delete $h{b};
print "hash:--$h{a}--$h{b}--$h{c}--\n";
######清空hash
undef %h;
print "hash:--$h{a}--$h{b}--$h{c}--\n";

#####擷取hash中所有key
%h = (‘a‘=>1,‘b‘=>‘_‘,c=>‘hello‘);
@all_key = keys %h;
print "[email protected]_key==\n";

#####hash排序

#所有索引值,是按hash的值從大往小排列的。值的比較是數字比較(比如說,10>9)
@all_keys = sort{$h{$b}<=>$h{$a}} (keys %h);
# 所有索引值,是按hash的值從小往大排列的。值的比較是數字比較
@all_keys = sort{$h{$a}<=>$h{$b}} (keys %h);
# 所有索引值,是按hash的值從小往大排列的。值的比較是字串比較(比如說,‘10‘ < ‘9‘)
@all_keys = sort{$h{$a} cmp $h{$b}} (keys %h);

#判斷hash是否包含key
exists($h{$key});
#########輸出hash儲存了多少資料
print scalar keys %h, "\n";

#遍曆一個hash
while (my ($k, $v) = each %h) {print "$k ---> $v\n";}

#### while迴圈使用

# last是跳出現在所在的迴圈,next則是跳過下面的指令直接執行下一次的迴圈。
while(chomp($i=100100100100100100100100100100)) {
 next if ($i == 5);
 last unless ($i > 10);
}

################# 舉例
# 求一組數的和並列印。
my $s1 = &sumvar(11,22,33);
my $s2 = &sumarg(22,33,44);
my $s3 = &sumgod(11,22,33,44,55);
print "s1=$s1, s2=$s2, s3=$s3\n";

# 辦法1
sub sumvar {
  # 將參數數組的前三個元素值相應地賦給($first, $second, $third)
  (my $first, my $second, my $third) = @_;
  # 返回其和值。缺點: 如果是求四個參數的和,依然只能給出前三個的和。
  return $first + $second + $third;
}

# 辦法2
sub sumarg {
  #$_[0] 表示參數數組@_的第一個元素。其餘類推。
  my $first = $_[0];
  my $second = $_[1];
  my $third = $_[2];
  #返回其和值。缺點: 同sumvar. 只是通過這裡學習 $_[0] 這種用法。
  return $first + $second + $third;
}

# 辦法3, 參數可以任意多。都能求其和。
sub sumgod{
  my $s = shift @_;
  foreach ( @_ ) {
   $s = $s + $_;
  }
  #同前面函數max。
  return $s;
}
#################### 總結
資料操作
* $ - 聲明與引用用一個scalar的變數
* @ - 聲明與引用一個list,但是當訪問一個list的成員時,需使用$ListName[index]
* % - 聲明與引用一個hash表,但是當訪問一個hash的成員時,需要使用$HashName

{key}

特殊變數
* $0 - 當前運行指令碼的檔案名稱
* @ARGV - 當前運行指令碼的命令列參數列表
* $_ - 預設變數,如迴圈中的當前變數
* @_ - 函數的輸入參數列表
* %ENV - 系統的環境變數
* @INC - Perl的Include路徑列表,我們可以往該列表中添加我們自己的目錄來方便引

用自訂的庫
* $! - 當前系統提示,錯誤資訊
* $^O - 作業系統的名字
* STDIN,STDOUT,STDERR - 輸入輸出的預設控制代碼,可以作一定的自訂
* => - 聲明一個hash時可以用來明確的表示出key=>value的對應關係
* $^I- 指定備份的檔案的尾碼名,如此,被修改的檔案將會自動以該尾碼名儲存一個副



特殊用法
* &Sub - 調用一個函數,雖然Perl有些規則讓你在某些時候可以省略這裡的&符號,但

是處於一致性考慮,所以自訂的函數的調用,我一律採用此種方式。
* $# - 用來取得模個數組的最大index, 一般情況下,也可以用-1來表示最後一個元素

的index的
* qw() - 快速聲明一個字串數組,可以省略那些煩人的引號

Regex
* $ - 擷取被括弧捕獲的匹配
* $`, $&, $‘ - 擷取匹配的字串,以及其前後兩個部分
* ^,$ - 字串的始末位置,用作定位

常用函數
* pop, push, shift, unshift, reverse - list的操作函數
* keys,values, exists, each, delete - hash的操作函數
* chomp, split, join, index, substr, sort - 字串操作函數
* sprintf,printf, print - 格式化輸出函數
* system, exec, `` - 系統命令調用函數
* glob, unlink, mkdir, rmdir, rename,chmod,chown, open, close, opendir,

closedir - 檔案系統操作函數
* stat, lstat,localtime,gmtime,utime - 文件屬性,時間相關函數
* hex, oct - 二進位,八進位,十六進位數轉化成十進位的函數
* grep, map - list進階操作函數

#這些函數的詳細介紹,都可以通過命令:
#perldoc -f functionname
#查到常用庫
* File::Basename - 根據path擷取檔案名稱或者檔案路徑
* File::Spec - 根據檔案名稱與路徑組合成全路經
* File::Find - 遞迴遍曆某個目錄下所有檔案
* XML::Simple - 以一個複雜的結構來表示xml檔案,使用起來相當方便
* Time::HiRes - 經常用來計算一個操作所耗費的時間
* Getopt::Long - 當指令碼需要複雜的輸入參數與選項時用到
* Cwd - 拿到當前工作目錄
* IO::File - 檔案操作

本文出自 “技術屌絲” 部落格,謝絕轉載!

perl學習筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.