type de variable sous perl

type de variable sous perl - Perl - Programmation

Marsh Posté le 04-06-2004 à 14:02:45    

je c que les variables perl ne sont pas typees mais je voulais savoir s'il y avait un moyen efficace de distinguer une variable numerique d'une variable "string"

Reply

Marsh Posté le 04-06-2004 à 14:02:45   

Reply

Marsh Posté le 04-06-2004 à 14:35:45    

Je verrais bien ça en passant par une expression régulière :

Code :
  1. $toto = "blabla";
  2. if ($toto =~ /^\d+\.*\d*$/)
  3. {
  4.     print "\$toto contient une valeur de type int ou float";
  5. }
  6. else
  7. {
  8.     print "\$toto contient vraisemblablement une chaîne de caractères";
  9. }


 
Pour expliquer rapidement la RegExp (en espérant ne pas être dans le faux)
/^\d+\.*\d*$/
- qui commence par un ou plusieurs nombres (compris entre 0 et 9)
- suivi d'un point (éventuellement)
- suivi d'un nombre (éventuellement)
 
ainsi, si $toto == 12, alors la RegExp est vraie, valable aussi si $toto == 0.12
 
On peut affiner la RegExp davantage mais dans l'idée, on n'est pas loin normalement...
 
Sinon, autre astuce si tu cherches juste à différencier les int des autres types de variables, tu as ça :

Code :
  1. $toto = "titi";
  2. if ( int($toto) == $toto) { print "c'est un entier"; }


J'utilise la fonction int( ) de Perl qui me convertit en entier une var fournie en paramètre. Si la conversion donne exactement la même chose...
 
Voilà m'siou ! :)


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 04-06-2004 à 14:49:10    

DemonEyesKyo a écrit :

je c que les variables perl ne sont pas typees mais je voulais savoir s'il y avait un moyen efficace de distinguer une variable numerique d'une variable "string"


pourkoi veut tu faire cette difference?

Reply

Marsh Posté le 04-06-2004 à 22:42:11    

pospos a écrit :

pourkoi veut tu faire cette difference?


 
+1


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed