2013年3月10日 星期日

Perl初學筆記(3)-關於Hash

今天在家看了一小段的hash
因為我沒有linux的環境,所以我用komodo跟activePerl模擬perl的執行環境
(題外話,說到komodo,前幾天我在家裡試,完全跑不起來,今天不知道怎麼搞的就好了?!)
也正因為這樣,我才有辦法在code寫中文註解,用vim開只會是亂碼xd

ch01.pl
#!/usr/bin/perl -w
use strict;
use Data::Dumper;

#hash是一組純量的集合(hash就是雜湊的意思)
#純量在雜湊中是無序的,也就是須透過key來得到value
#定義一個名為about_win的hash可以這樣寫
#另外雜湊命名以%表示
my %about_win = (
                 'name'=>'Win',
                 'age'=>'24',
                 'job'=>'f2e',
                 'sex'=>'female'
                );
#當然這種key=>value的寫法不是定義hash的唯一方式
#也可以這樣寫
#my %about_win = ('name','win','age','24','job','f2e','sex','female');
#以上的寫法也可以被perl解釋成hash的key跟value,perl會把2N項看成是key(像是0,2,4,6...)

#dump出整個hash
print Dumper \%about_win;

#單獨取出hash的值
print "這是about_win的name: $about_win{name}\n";
print "這是about_win的age: $about_win{age}\n";

#動態增加hash的值
$about_win{is_like_dog}='yes';
print "動態增加一個is_like_dog之後的about_win的Dumper結果是".Dumper \%about_win;

#刪除雜湊的值(value)就是把它清空,讓他釋放記憶體空間
%about_win = ();
print Dumper \%about_win;
#這時dump出來的值就會是空值;



#雜湊和陣列不一樣的是,雜湊沒有按照順序排列
#那要如何知道一個hash有什麼key?
#可以使用Keys(%hash名)取得一個回傳陣列,該陣列會取得該hash裡面的所有key name
my %car = ('label'=>'audi',
           'price'=>'1000000');

print "印出car的key跟value:\n";
while ((my $key, my $value) = each(%car)){
     print $key.", ".$value."\n";
}

#刪除雜湊有兩個方式
(1)delete:一次刪除一個key
(2)undef :刪除整個hash 或是用剛剛提到的%about_win = (); 將hash設定為空值

delete $car{label};
print Dumper \%car;
#結果只剩price

undef(%car);
print Dumper \%car;
#甚麼都沒有了


#如何判斷一個hash有沒有某個key
my %dinner = (
            'food'=>'rice',
            'price'=>'200',
            'drink'=>'green tea'
             );

print exists $dinner{food};
#結果是1 就是true的意思,表示dinner有food這個key



以上ch01.pl的執行結果:
$VAR1 = {
          'name' => 'Win',
          'sex' => 'female',
          'age' => '24',
          'job' => 'f2e'
        };
這是about_win的name: Win
這是about_win的age: 24
動態增加一個is_like_dog之後的
about_win的Dumper結果是$VAR1 = {
          'is_like_dog' => 'yes',
          'name' => 'Win',
          'sex' => 'female',
          'age' => '24',
          'job' => 'f2e'
        };
$VAR1 = {};
印出car的key跟value:
price, 1000000
label, audi
$VAR1 = {
          'price' => '1000000'
        };
$VAR1 = {};
1

沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...