Prima di tutto, è fallo.
Detto questo, sono anche sorpreso che funzioni. Avrei intuito che ++$#array
avrebbe ottenuto l'errore "Impossibile modificare la costante" che si ottiene quando si tenta di incrementare un numero. (Non che io accidentalmente lo faccia, naturalmente.) Ma immagino che sia esattamente dove ci siamo sbagliati: $#array
non è una costante (un numero); è un'espressione variabile. In quanto tale, puoi scherzare. Si consideri il seguente:
my @array = qw/1 2 3/;
++$#array;
$array[$#array] = qw/4/;
print "@array\n"
E anche, per il divertimento in più, in questo modo:
my @array = qw/1 2 3/;
$#array += 5;
foreach my $wtf (@array) {
if (defined $wtf) {
print "$wtf\n";
}
else {
print "undef\n";
}
}
E, sì, il Perl Cookbook è felice di pasticciare con $#array
crescere o troncare array (Capitolo 4 , ricetta 3). Lo trovo ancora brutto, ma forse è solo un persistente "ma è un numero" di pregiudizi.
Grazie per la modifica - che è il titolo avrei dovuto scrivere. –