Perl中为数组最后一个元素追加换行符报错,求解决方法
解决Perl数组最后一个元素添加换行符的问题
错误原因
你碰到的Modification of non-creatable array value attempted, subscript -1错误,核心原因是当前数组为空——Perl里下标-1代表最后一个元素,数组没有元素时这个下标对应的元素根本不存在,自然没法修改。所以操作前必须确保数组至少有一个元素。
可行的解决方法
方法1:直接修改(最简洁)
只要数组非空,你最初写的$array[-1] .= "\n";完全有效,比如:
my @array = ("one", "two", "n", "last"); $array[-1] .= "\n"; # 此时@array最后一个元素变为"last\n"
如果不确定数组是否为空,先加判断避免报错:
if (@array) { # 数组非空时布尔值为真 $array[-1] .= "\n"; }
方法2:用splice实现
当然可以用splice,它的作用是替换数组指定位置的元素,针对最后一个元素的写法如下:
my @array = ("one", "two", "n", "last"); if (@array) { # 从倒数第1位开始,删除1个元素,插入带换行的新值 splice @array, -1, 1, $array[-1] . "\n"; }
内容的提问来源于stack exchange,提问作者olivierg
相关产品推荐
相关产品推荐

