perl學習筆記——雜湊

來源:互聯網
上載者:User

標籤:

雜湊

雜湊是一種資料結構,它和數組的相似之處在於可以容難任意多的值並能按需取用,而他和數組的不同在於索引的方式,數組是以數字為索引而雜湊則是以名字為索引。

雜湊的鍵是唯一的,雜湊的值可以重複。

雜湊的應用情境

舉例:

  • 按名字找姓;
  • 按主機名稱找IP地址或者按照IP地址找主機名稱;
  • 按照單詞統計其出現次數;
  • 按使用者名稱統計每個人使用的磁碟塊數量;
  • 按照駕照號碼找出姓名。
訪問雜湊元素

如:$hash{$some_key} //注意使用的是大括弧{} 不是中括弧

賦值: $family_name{‘fred‘}=‘flintstone‘;

    $family_name{‘barney‘}=‘rubble‘;

訪問整個雜湊

%some_hash=(‘foo‘,35,‘bar‘,12.4); // %<雜湊名>=(key,value,key,value......)

可以用下面代碼簡單查看:

my @k=keys %some_hash;//keys後面講解

foreach (@k)

{

  print "$_=>$some_hash{$_}"."\n";

}

注意輸出順序可能是亂序。

@tmp_hash=%some_hash==>結果:tmp=foo 35 bar 12.4

雜湊賦值

my %new_hash=%old_hash;==>會為new_hash分配記憶體,然後將old_hash的值賦過去。並不是簡簡單單引用

my %inverse_hash=reverse %any_hash;

 

上面這個比較適用於:按主機名稱找IP地址或者按照IP地址找主機名稱

胖箭頭=>

主要目的是為了對下面這種模式的改善:%some_hash=(‘foo‘,35,‘bar‘,12.4);

如:my %some_hash=(

  ‘foo‘=>35,

  ‘bar‘=>12.4,

  ‘dnio‘=>undef,

);

注意:每一行的最後都有逗號.

雜湊函數

keys values

keys函數能返回雜湊的鍵列表,values函數能返回對應的值的列表。

如:my %hash=(‘a‘=>1,‘b‘=>2,‘c‘=>3,);

  my @k=keys %hash;// 將會得到 a b c

  my @v=values %hash;// 將會得到 1 2 3

如果使用: my $count=keys %hash;//將會得到3 也就是說hash有3對鍵

each函數

如果需要迭代整個雜湊,常見的用法就是用each函數.每次返回的就是hash表的鍵、值對。直到所有的元素都被訪問完。

如:while (($k,$v)=each %hash){

  print "$k=>$v\n";

}

再比如:each返回鍵-值對的順序是亂序的,但它與keys和values返回的順序相同,也就是hash的自然順序。如果需要依次處理hash,則只需要對鍵排序就行

foreach $key(sort keys %hash){

  $value=$hash{$key};

  say "$key=>$value";

}

exists函數

檢查雜湊表中是否存在某個鍵。

if (exists $hash{‘foo‘}){

  say "there is a foo";

}

delete函數

從雜湊中刪除指定的鍵和相對應的值。(總是成功)

my $person="betty";

delete $hash{$person};

%ENV雜湊

Perl程式既然運行在某個環境中,就需要對周圍的環境有所感知。Perl訪問這些環境資訊的方法就是訪問%ENV雜湊。如:

print "PATH is $ENV{PATH}";

 

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.