|
|
|
|
Salut a tous,
je n'arrive pas a me tirer d'affaire avec le perl alors j'ai besoin d'un petit coup de main.
En fait je dois faire une code qui prend en parametre une chaine de caractere qui est une operation arithmetique de probabilite.
ex d'execution:
>201event "1+-8" 0,954
>201event "1+3+5" 0,978
ben j'ai d'abord essayer de recuperer les chiffres dans un tableaux puisqu'il ya une operation prealable a faire pour chaque chiffre avant d'effectuez l'operation visible.voici mon code:
if(scalar @ARGV < 2)
{
print("201event needs some arguments \n");
exit 0;
}
my @tab = $ARGV[1];
$i = 0;
$a = 0;
my @opr;
while($tab[$i])
{
if($tab[$i] == '-')
{
$opr[$a] = 1 - (((4 * $tab[$i + 1]) + 5) / (10 * $tab[$i + 1]));
print ("$opr[$a]");
print ("$tab[$i + 2]");
}
else
{
$opr[$a] = (((4 * $tab[$i]) + 5) / (10 * $tab[$i]));
print ("$opr[$a]");
print ("$tab[$i + 1]");
}
$i += 2;
$a++;
}
print ("bon test");
exit 0;
et il me met une erreur comme suit:
./201event.pl: No match.
alors jene comprends pas vraiment pourkoi il me met cette erreur la vu que je suis encore debutant en perl, j'aimerai bcp que vs m'aidiez dans ce sens a parfaire ce code.merci d'avance pour votre comprehension.
Salut,
[lamitest@localhost corbeille]$ cat ddd #! /usr/bin/perl use warnings; use strict; my @tab=$ARGV[1]; print scalar @tab,"\n"; [lamitest@localhost corbeille]$ perl ddd "1+3+5" 0,978 1 [lamitest@localhost corbeille]$Donc je ne vois pas le sens de ta boucle qui incrémente $i de 2 ( $i +=2), à moins que tu préconises utiliser plusieurs arguments et que tu ne veux traiter que les arguments dont leur position et paire (0,2,4....) En bref expliques ton problème. D'où tu dois partir et que tu veux obtenir. Je t'expliquerai un peu la façon d'ecrire le code. Ex: print avec paranthéses et consideré comme une fonction print sans paranthèses et un opérateur de liste. [lamitest@localhost corbeille]$ cat print #! /usr/bin/perl use warnings; use strict; print (1+2),3; print "\n"; print 1+2,3; print "\n"; [lamitest@localhost corbeille]$ perl print print (...) interpreted as function at print line 6. Useless use of a constant in void context at print line 6. 3 33 [lamitest@localhost corbeille]$ A la place de if(scalar @ARGV < 2)
{
print("201event needs some arguments \n");
exit 0;
} écrit plutôtwhile( @ARGV < 2){
die "201event needs some arguments \n";
last;
}
ou mêmewhile( @ARGV < 2){
die "201event needs some arguments \n" and last;
}
Donc je n'ai pas essayé de déchiffrer ton code pour l'instant puisque je n'ai pas compris ce que tu veux. |