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