Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

bizarrerie instruction if

1 réponse
Avatar
jean
Bonjour

Je ne comprends PAS pourquoi ces deux instructions en théorie
identiques, placées au même endroit, ne renvoient pas le même résultat:


($champs[6] =~ m/^A/) ? $auth = "OUI" : $auth = "NON";

if ($champs[6] =~ m/^A/) { $auth = "OUI" } else { $auth = "NON" }


Seule la seconde fonctionne; la première affecte toujours "NON" à $auth.
Ceci précédé de (en très résumé):

open (FICHIER, "/var/log/fichier.log");
my @lignes = (<FICHIER>);
my $auth = "";
for ($i=0;$i<@lignes;$i++) {
my @champs = split " ", $lignes[$i];

Je sens qu'il y a quelque chose qui m'échappe; merci si vous pouvez
m'éclairer.

--
Jean

1 réponse

Avatar
Kevin
$auth=(($champs[6] =~ m/^A/ )?"OUI":"NON");

l'opérateur ?: n'est pas vraiment fait pour exécuter des actions
conditionnelles, mais plutôt pour retourner des valeurs :)