Trước hết, điều đó thật đáng tiếc.
Điều đó nói rằng, tôi cũng ngạc nhiên khi nó hoạt động. Tôi đã đoán rằng ++$#array
có thể đã nhận được lỗi "Không thể sửa đổi liên tục" mà bạn nhận được khi cố gắng tăng số. (Không phải là tôi đã từng vô tình làm điều đó, tất nhiên.) Nhưng, tôi đoán đó là chính xác nơi chúng tôi đã sai: $#array
không phải là một hằng số (một số); đó là một biểu thức biến. Như vậy bạn có thể gây rối với nó. Hãy xem xét những điều sau đây:
my @array = qw/1 2 3/;
++$#array;
$array[$#array] = qw/4/;
print "@array\n"
Và thậm chí, cho vui thêm, điều này:
my @array = qw/1 2 3/;
$#array += 5;
foreach my $wtf (@array) {
if (defined $wtf) {
print "$wtf\n";
}
else {
print "undef\n";
}
}
Và, yeah, các Perl Cookbook là hạnh phúc để gây rối với $#array
để phát triển hoặc cắt ngắn mảng (Chương 4 , công thức 3). Tôi vẫn thấy nó xấu xí, nhưng có lẽ đó chỉ là một thành kiến "nhưng đó là một con số".
Cảm ơn đã sửa - đó là tiêu đề tôi nên đã viết. –