在 array function 上. 除了用 push, pop 來改變 array 的 pointer外. 也可以用
delete 來清除 array 內部的 data, 但這樣會遇到一個問題. 就是 delete 完後 array 不會 shit 到最新的位置, 所以在做查找時候會出現 undef.
範例. 假設我們 delete 了 dd[0] 的 data. 而下次我們要取得 dd[0] 時,應該為 'c' 才對. 但是現在卻是 undef...xd
use Data::Dumper;
use strict;
my $dd = ['d',
'c',
'x',
'e'];
delete $dd->[0];
print Dumper($dd);
result
$VAR1 = [
undef,
'c',
'x',
'e'
];
solution
建立個新的 array 之後再 map 過去...XD.感覺是個很笨的方式..
不然也可以用 "splice" / "join + split" ...
use Data::Dumper;
use strict;
my $dd = ['d',
'c',
'x',
'e'];
delete $dd->[0];
my $a=[];
foreach my $k (@{$dd}){
if($k){
push(@{$a},$k);
}
}
@{$dd} = @{$a};
print Dumper($dd);
ex: join + split
use Data::Dumper;
use strict;
my $dd = ['d',
'c',
'x',
'e'];
delete $dd->[0];
my $st = join(' ',@{$dd});
@{$dd} = split(' ',$st);
print Dumper($dd);
沒有留言:
張貼留言