Perl 编程/关键字/delete
外观
Thedelete命令删除哈希的切片,如果EXPRESSION指定了哈希元素。删除后,exists() 不会再返回该元素/这些元素的真值。将哈希元素设置为undef 不会删除其键,但delete命令会删除。
如果在列表上下文中调用,它将返回被删除的值。返回列表的长度等于原始列表,其中undef代替了已删除的项。如果在标量上下文中调用,则返回最后一个被删除的值。
delete也可以用于数组和数组切片,但行为不那么直接。在这种情况下,虽然 exists() 对已删除的项也返回假值,但它们的索引永远不会改变。要使索引改变,必须使用 shift()() 或 splice()。
警告: 在数组值上调用 delete 已被弃用,并且可能会在将来的版本中删除。
delete EXPRESSION
use 5.10.0;
%hash = (foo => 11, bar => 22, baz => 33);
for (($key, $element) = each %hash) {
print "key => " . $key . " " . $element . "\n";
}
say 'delete $hash{foo}';
$scalar = delete $hash{foo}; # $scalar is 11
print $scalar . "\n";
$scalar = delete @hash{qw(foo bar)}; # $scalar is 22
print $scalar . "\n";
@array = delete @hash{qw(foo baz)}; # @array is (undef, 33)
say '@array = delete @hash{qw(foo baz)}';
for ($element = each @array) {
print $element . "\n";
}
返回
key => bar 22 key => bar 22 delete $hash{foo} 11 22 @array = delete @hash{qw(foo baz)} 0