- 論壇徽章:
- 0
|
今天要講得是lock_value這個函數(shù)。它的功能是能鎖住某個Key對應(yīng)的值。但是其實Perl會告訴你這個鎖不安全。
lock_value的用法是lock_value( %has, key );- lock_value( %hTestHash, "FOUR" );
- eval{# We can modify the value here
- $hTestHash{ FOUR } = 5;
- };
- print "We can't modify the value of key 'FOUR', when it is locked:[$@]" if $@;
- printHash( \%hTestHash );
復(fù)制代碼 這里我們試圖把在昨天已經(jīng)加入的"FOUR" => 4 , 修改其值為5。但由于我們剛剛已經(jīng)講"FOUR"對應(yīng)的值鎖住了,所以這里修改值的操作失敗了?磥礞i管用。但這時候,Perl發(fā)出了個warning:- Cannot usefully lock values in an unlocked hash at /develop/Project/Perl/pppk/Hashes/Recipe5.3/perl.pl line 95
復(fù)制代碼 怎么?還不能有效鎖住value嗎?的確。我們接下來的操作會讓顯示這句話的一些意思。
既然鎖住的是key對應(yīng)的value,那我們把這個key刪掉會如何呢?鎖會阻止我刪除嗎?帶著這樣的疑問,我嘗試了下。- eval{# the lock on "FOUR" is expired.
- delete $hTestHash{ FOUR };
- };
- print "We can delete key 'FOUR' when it is locked." if not $@;
- printHash( \%hTestHash );
復(fù)制代碼 從異常和輸出來看,即使value被鎖住,但是居然是可以刪除key的。而且這里我提前注釋了下,已有的鎖過期了,失效了。 |
|