gilou a écrit :
Pourquoi pas, mais ceci:
$fichier=~s/(?<=!\.)\.[^.]+$//;
serait peut être mieux, ou son équivalent avec ma ligne: $filename =~ s/(.*[^.])\.[^.]+/$1/;
A+,
|
Corrections:
pour la ligne avec s/(.*[^.])\.[^.]+/$1/;
J'avais oublié le $ final, nécessaire puisque je n'ai plus .* en fin de regexp
ce devrait donc être
$filename =~ s/(.*[^.])\.[^.]+$/$1/;
Pour la ligne avec s/(?<=!\.)\.[^.]+$//;
il y avait clairement une faute de frappe (le copier coller hâtif à encore frappé): c'était (?<!\.) avec un look-behind négatif que je voulais.
Mais ça marche pas, car un tel contexte est matché par le vide, et l'ensemble matcherait un nom comme ".toto"
Il vaut mieux donc un look-behind positif:
$fichier=~s/(?<=[^.])\.[^.]+$//;
Note: (?<=!\.) ne déclenchait pas d'erreur sur mes essais, mais je n'ai aucune idée de la manière dont c'était interprété par Perl, et, c'était hautement risqué d'employer ça
A+,
Message édité par gilou le 20-06-2015 à 11:32:41
---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻