Je l'ai remarqué en regardant another question ...Perl flip opérateur flop et les numéros de ligne
Si j'ai un script comme ceci:
while (<>) {
print if 5 .. undef;
}
Il saute les lignes 1..4 imprime le reste du fichier. Cependant, si j'essaie ceci:
my $start_line = 5;
while (<>) {
print if $start_line .. undef;
}
Il imprime de la ligne 1. Quelqu'un peut-il expliquer pourquoi?
En fait, je ne suis même pas sûr de savoir pourquoi le premier fonctionne.
Hmmm regardant plus loin dans ce que je trouve que cela fonctionne:
my $start = 5;
while (<>) {
print if $. == $start .. undef;
}
La première version utilise comme par magie $.
qui est le numéro de ligne. Mais je ne sais pas pourquoi cela échoue avec une variable.
Perl est parfois plus un «livre de sorts magiques» qu'un langage. –
@JohnC: C'est encore plus vrai pour la langue anglaise :) – Zaid