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

Bizarre : erreur avec REGEXP

2 réponses
Avatar
TEXTORIS Julien
Bonjour à tous,

J'ai un warning lors de la compilation d'un script, je serait bien passé
outre, si le code ne faisait pas l'inverse de ce que j'en attend !!!

J'ai sorti la portion de code qui nefonctionne pas et la voici, avec un
exemple de test :

#!/usr/bin/perl -w

use strict;
use warnings;

my($read_str) = "perdu";
my(%mtrx);

print("\nsalut, entrez un chiffre : ");
$read_str = <>;
chomp($read_str);
$mtrx{13435}{34} = $read_str;
if ($mtrx{13435}{34} == /^?\d+$/) {print("\n\nGagné !\n");}
else {print("perdu ;-(\n");}

résultat :

[jtextori@localhost touchgraph]$ ./is_numeric.pl

salut, entrez un chiffre : 45
Use of uninitialized value in pattern match (m//) at ./is_numeric.pl
line 13, <> line 1.
perdu ;-(

[jtextori@localhost touchgraph]$ ./is_numeric.pl

salut, entrez un chiffre : sd
Use of uninitialized value in pattern match (m//) at ./is_numeric.pl
line 13, <> line 1.
Argument "sd" isn't numeric in numeric eq (==) at ./is_numeric.pl line
13, <> line 1.


Gagné !


Je m'initie à perl et là je doit dire que je suis un peu dérouté ? J'ai
définit les variables avant, et $mtrx{}{} reçoit une valeur avant le
test ?? si vous pouviez m'aider ?

Merci

julien

2 réponses

Avatar
Stephane Zuckerman
if ($mtrx{13435}{34} == /^?d+$/) {print("nnGagné !n");}
^^^^^^^^^

remplacer '==' par '=~' devrait aider :-)


--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Avatar
TEXTORIS Julien
Stephane Zuckerman wrote:
if ($mtrx{13435}{34} == /^?d+$/) {print("nnGagné !n");}


^^^^^^^^^
remplacer '==' par '=~' devrait aider :-)


J'avais pas compris la différence entre eq et =~ ! maintenant oui !! merci

ju