my @lignes=0;
ca passe ca?
fait un my @lignes tout court, ou bien my ligne = () (ca vient juste d'etre optimisé dans perl 5.8.5, donc mieux faut faire un simple my @lignes qui s'initialise tout seul plutot que l'initialiser deux fois si tu a une version de perl inferieure à 5.8.5 (ce qui est tres probable))
bon, sinon c'est le use warnings qui se plain ici:
visiblement il y a moins de 13 lignes dans ton fichier, donc l'element 12 de ton tableau n'a pas été defini. si tu veux la 12emme ligne c'est $lignes[11] qu'il faut faire.
à part ca, pour ta boucle, en Perl pour iterer un tableau la meilleur solution est le foreach (en fait on le fait avec un for):
for (@lignes) {
print $_, "\n";
}
et si tu veux connaitre la taille de ton tableau tu l'evalu dans un contexte scalaire (comme tu a fais dans ta boucle for):
print scalar(@lignes);
ou
print @lignes+0;
(si tu fait 'print @lignes' tout court il est evalué en contexte de liste car print s'attend à recevoir une liste)
ca te donne le nombre totale d'element du tableau, et donc le dernier element de ce tableau sera sa taille-1 (puisqu'il commence à 0)
tu peux aussi recuperer le rang du dernier element (donc taille-1) comme ca:
print $#lignes;
la, plus de porbleme de contexte scalair ou liste