Salut
Pourkoi quand je fait:
Ca marche pas etCode:
1
2
3
4 $a=$b; if($a==$b) print "egaux";
Ca marcheCode:
1
2
3
4
5
6 $a=$b; if($a==$b) { print "egaux"; }
Pourkoi il fo mettre les { } obligatoirement?
Cest des option de perl ?...
Merci
Version imprimable
Salut
Pourkoi quand je fait:
Ca marche pas etCode:
1
2
3
4 $a=$b; if($a==$b) print "egaux";
Ca marcheCode:
1
2
3
4
5
6 $a=$b; if($a==$b) { print "egaux"; }
Pourkoi il fo mettre les { } obligatoirement?
Cest des option de perl ?...
Merci
Parce que c'est du Perl et pas du C ...
salut
merci pour la rapidite :D
Donc je dois toujours mettre les accolades?
Mais on dit que le prel reprend toutes les facilites du C alors pourkoi il prend pas ca des fois ce serait plus simple et moins lourd ke les accolades non?
oui mais même si Perl reprend les facilités du C, Perl est un langage de programmation à part entière !
Et quand on dis qu'il reprend des trucs du C, il n'en reprend pas tout. Déjà, Perl a ses propres fonctions mais ne serait-ce par exemple pour pour le switch du C, y a pas ça en Perl.
Donc oui, dès que tu ouvres un bloc, il faut l'entourer d'accolades.
Autre piège que je sens qu'il pourrait t'arriver :wink: : if ($a == $b) ... Ok, == est parfait pour comparer des valeurs numériques mais si tu compares deux chaînes, ne te fais pas avoir et remplace == par eq :D
lol
trop tard chuis deja tomber dans le piege 8)
Torai pu me le dire avant :wink:
mais g trouve sur le net
Par contre g pas encore trouver comment passer des parametres a un script perl
Si yaen a ki save chui preneur
Cest vrai que Perl est un langage a part entiere mais souvent on dit kil reprend les facilites du C. Mais a ce ke je vois il les prend pas toutes
Pas grave on fera avec :D
PS:C vrai chuis un newbie de Perl :oops:
En tout cas merci ded votre aide
exemple de script Perl récupèrant 2 paramètres :
et comment qu'il fonctionne ? :Code:
1
2
3
4
5 use strict; my $Param1 = $ARGV[0]; my $Param2 = $ARGV[1]; print "param recus = $Param1, $Param2\n";
ce qui donnera dans le print :Code:perl Mon_prog.pl toto titi
Vu que tu te lances tout juste dans le Perl :Code:param recus = toto, titi\n
- utilise toujours "use strict;" au début de tes scripts. Ca t'oblige à déclarer chaque variable avec un "my" devant mais au moins, tu ne te feras pas avoir si par mégarde tu utilises en plein milieu de ton code une variable $totoo alors que tu voulais dire $toto. Avec use strict, Perl t'avertira que $totoo lui est inconnue, ce qui te fera gagner un temps précieux :wink:
- lance perl comme ceci "perl -w mon_prog.pl", le flag "-w" oblige Perl à faire plus gaffe à ce que fait ton script. En cas d'erreur, ça te retournera davantage de messages d'avertissements (-w pour warnings).
- quand tu lances un script en l'alimentant avec des paramètres, tous les paramètres attérissent dans le tableau @ARGV. Comme tu viens du C, cette notion doit te paraître plus que connue :D mais là encore, attention. En C, ARGV[0] contient le nom du programme, PAS EN PERL. Le nom du programme est alloué à la variable $0 et donc $ARGV[0] est bel et bien le 1er paramètre donné à ton programme.
Note bien ça dans tes tablettes, ce qui suit est tiré de l'excellentissime manuel de Perl perlallfr.pdf :
voir doc ici : http://freealter.org/doc_distrib/perl-5.00502/fr/DocFr/perlallfr.pdf
PerlTrap ---> Les Pièges de C
Les programmeurs C cérébraux devraient prendre note de ce qui suit :
– Les accolades sont requises pour les if et les while.
– Vous devez utiliser elsif à la place de else if.
– Les mots-clés break et continue de C deviennent respectivement last et next en Perl. Contrairement au C, ceux-ci ne fonctionnent pas à l’intérieur d’une structure do { } while.
– Il n’y a pas d’instruction switch (mais il est aisé d’en construire une à la volée).
– Les variables commencent par "$", "@" ou "%" en Perl.
– printf() n’implémente pas le format "*" interpolant les largeurs de champs, mais il est trivial d’utiliser l’interpolation de chaînes entre guillemets pour obtenir le même résultat.
– Les commentaires commencent par "#", pas par "/*".
– Vous ne pouvez pas prendre l’adresse de quelque chose, bien qu’un opérateur analogue en Perl est la barre oblique inverse, qui crée une double référence (hein ? NDT).
– ARGV doit être en majuscules. $ARGV[0] est l’argv[1] du C, et argv[0] atterrit dans $0.
– Les appels systèmes tels que link(), unlink(), rename(), etc. renvoient autre chose que zéro en cas de succès.
– Les handlers de signaux manipulent des noms de signaux, pas des nombres. Utilisez kill -l pour déterminer leurs noms sur votre système.
Super
G fais un copier coller de tout ce que tu mas dit. :D Tous est dans mes tablettes :D
Merci bcp pour ton aide. :ccool:
Par contre T pas a jour :wink:
Pour la doc perl je lave deja telecharger et il existe une version plus recente la mienne date du 17 mars 2003 (ya plus de page :lol: )
Par contre desole pour ce ki la veulent je C plus ou je ai dowloader :oops: :oops:
Merci et A+
Prochainement sur PERL :Question de newbie 8)
Vi, Perl reprend toutes les facilités du C et même plus, donc pour ta première question, je te signale qu'en perl, on peut écrire ça :
Ce qui est encore mieux qu'en C non ? :DCode:
1
2
3 $a=$b; print "égaux" if( $a==$b or $a eq $b ) ;
Cest vrai ke cest mieux, enfin disons que cest different je pense qu'apres c un question d'habitude.
Donc le Perl est fait de subtilites
En parlant de ca si vous connaissez des truc de ce genre et qui sont courant
chui preneur
En tout cas merci pour linfo
Ben presque tous les mots clés pour les structures de boucle ou conditionnelle peuvent-être utilisés comme ça, exemple :
Si tu ne comprend pas ce bout de code, dis le moi, c'est un raccourci très courant et très pratique en Perl.Code:
1
2 print for ("Bonjour", " tout", " le", " monde ! :)\n");
Autre truc très courant en Perl :
C'est le 'or' qui est important ici : il n'effectue son second opérateur que si le premier renvoit une valeur fausse, donc ici, si open réussit, il renvoit vrai, sinon undef qui est une valeur fausse, donc si open réussit, or n'exécute pas le die et renvoit vrai (mais ici on s'en fout) et passe à l'instruction suivante, par contre si le open échoue, le or ne sait pas encore s'il doit renvoyer vrai (c'est un ou inclusif) et exécute donc le die, c'est à dire arrête le programme avec une exception et fournit le message d'erreur.Code:
1
2 open FICHIER, "lire.txt" or die "open lire.txt : $!";
Enfin, y a tout un tas d'autres expressions idiomatique en perl. :D
Salut
Jadore les expression idiomatique :twisted:Citation:
Envoyé par Jedai
G compris pour le for 8) mais un foreach serait plus clair dans ce cas non?
En tout cas Merci pour les infos je suppose que je decouvrirai le reste au fur et a mesure
Jai appris plein de truc aujourdhui :D Merci a tous
foreach et for == même chose :DCitation:
Envoyé par kacedda
et ces 3 expressions ci-dessous font la même chose, ce sont des boucles for :
for($i = 0; $i < 10; ++$i)
foreach(0 .. 9)
for(0 .. 9)
Salut
Merci pour linfo
VIVE Perl
En fait ya vraiment plein doutil pour simplifier la vie
Par contrte si je fais ca:
for(0 .. 9)
Estce ke je pe recuperer la valeur de la boucle cad comme si yaV $i ?
Pour dire vrai, je t'ai donné cet exemple juste pour te montrer ce qu'on pouvait faire avec le Perl.Citation:
Envoyé par kacedda
Comme disent les perlistes, TIMTOWTDI (There Is More Than One Way To Do It) : il y a + d'une façon de faire la même chose.
A toi de voir ce qui te plait le mieux.
Pour répondre à ta question : for(0 .. 9) revient à dire foreach $_(0 .. 9), sauf que dans mon exemple $_ n'est pas indiqué parce qu'il est implicitement utilisé par la syntaxe.
Au 1er passage dans la boucle for, $_ vaudra 0 et il ne vaudra 1 que lorsque ce qu'il a à faire dans la boucle sera terminé.
Mais perso, je préfère ça : foreach $i(0 .. 9)
Merci bcp pour vos conseille les gars, cest vraiment sympa , jen aurai encore surement besoin dans lavenir :lol:
Merci encore 8)