OVH Cloud OVH Cloud

numerotation en 0001 , 0002 etc

19 réponses
Avatar
Mag
Bonjour,

je suis en debutant sous perl ;=)

Je cherche a faire un compteur a 4 chiffres
qui s'incremente, le probleme, si je part en '0001'
et que je fais un simple

$count=$count+1

cela passe a 2 et non pas a 0002

comment faire ?

merci d'avance

9 réponses

1 2
Avatar
jl_morel
Dans l'article <478f084d$0$30658$, a
dit...

Bonjour,

je suis en debutant sous perl ;=)

Je cherche a faire un compteur a 4 chiffres
qui s'incremente, le probleme, si je part en '0001'
et que je fais un simple

$count=$count+1

cela passe a 2 et non pas a 0002

comment faire ?



En utilisant l'opérateur d'incrémentation ++ pardi !

#!/usr/bin/perl
use strict;
use warnings;

my $c = '0000';

for (1..25) {
$c++;
print "$cn";
}

__END__

HTH

--
J-L.M.
http://www.bribes.org/perl

Avatar
Patrice Karatchentzeff
(Jean-Louis MOREL) a écrit :

En utilisant l'opérateur d'incrémentation ++ pardi !

#!/usr/bin/perl
use strict;
use warnings;

my $c = '0000';

for (1..25) {
$c++;
print "$cn";
}

__END__


marche pas ton truc :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
0
1
2
3
4
%

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       

Avatar
jl_morel
Dans l'article ,
a dit...

(Jean-Louis MOREL) a écrit :

En utilisant l'opérateur d'incrémentation ++ pardi !

#!/usr/bin/perl
use strict;
use warnings;

my $c = '0000';

for (1..25) {
$c++;
print "$cn";
}

__END__


marche pas ton truc :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
0
1
2
3
4
%



La variable incrémentée n'est pas la même variable que celle qui est
initialisée :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
^
il y a un r en trop là ;-)

Et puis c'est pas un truc ! c'est Perl qui est magique !!

http://www.bribes.org/perl/docfr/perlop.html#L81381271


--
J-L.M.
http://www.bribes.org/perl


Avatar
Paul Gaborit
À (at) 17 Jan 2008 15:20:54 +0100,
Patrice Karatchentzeff écrivait (wrote):
(Jean-Louis MOREL) a écrit :

En utilisant l'opérateur d'incrémentation ++ pardi !

#!/usr/bin/perl
use strict;
use warnings;

my $c = '0000';

for (1..25) {
$c++;
print "$cn";
}

__END__


marche pas ton truc :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
0


Problème d'utilisation du 'shell' (ou "shell") d'une part, et de nom
de variable et donc d'absence de '-w' d'autre part. ;-)

Essayez donc :

% perl -we '$inc="0000" ; for (1..5) {print $inc++, "n"}'

Cette fonctionnalité magique de l'opérateur '++' est documentée dans
'perlop'. Elle fonctione aussi avec les lettres. Mais elle n'existe
malheureusement pas pour les autres opérateurs (--, +, *, etc.).

Il faut donc aussi connaître la méthode plus générale en passant par
'sprintf' :

$incr = sprintf("%04d", $incr + 7);

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
Paul Gaborit
À (at) 17 Jan 2008 16:11:36 GMT,
(Jean-Louis MOREL) écrivait (wrote):
La variable incrémentée n'est pas la même variable que celle qui est
initialisée :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
^
il y a un r en trop là ;-)


Ça ne suffit pas ! Il faut aussi être cohérent sur l'utilisation des
guillemets et des apostrophes... ;-)


--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
jl_morel
Dans l'article ,
a dit...


À (at) 17 Jan 2008 16:11:36 GMT,
(Jean-Louis MOREL) écrivait (wrote):
La variable incrémentée n'est pas la même variable que celle qui est
initialisée :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
^
il y a un r en trop là ;-)


Ça ne suffit pas ! Il faut aussi être cohérent sur l'utilisation des
guillemets et des apostrophes... ;-)



J'avoue ! Contrairement à mon bout de code initial, je n'ai pas testé le
"oneliner" : ce n'est jamais facile sous Windows - les guillemets simples
ne sont pas reconnus par le shell.

C:tmp>perl -we '$inc="0000" ; for (1..5) {print $inc++, "n"}'
Can't find string terminator "'" anywhere before EOF at -e line 1.

Obligé d'utiliser des guillemets doubles englobants et de protéger les
guillemets à l'intérieur :

C:tmp>perl -we "$inc="0000" ; for (1..5) {print $inc++, "n"}"
0000
0001
0002
0003
0004

--
J-L.M.
http://www.bribes.org/perl


Avatar
JacK
Dans l'article,
a dit...

À (at) 17 Jan 2008 16:11:36 GMT,
(Jean-Louis MOREL) écrivait (wrote):
La variable incrémentée n'est pas la même variable que celle qu i est
initialisée :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
^
il y a un r en trop l à ;-)
Ça ne suffit pas ! Il faut aussi être cohérent sur l'utilisation des

guillemets et des apostrophes... ;-)



J'avoue ! Contrairement à mon bout de code initial, je n'ai pas testé le
"oneliner" : ce n'est jamais facile sous Windows - les guillemets simpl es
ne sont pas reconnus par le shell.

C:tmp>perl -we '$inc="0000" ; for (1..5) {print $inc++, "n"}'
Can't find string terminator "'" anywhere before EOF at -e line 1.

Obligé d'utiliser des guillemets doubles englobants et de protéger les
guillemets à l'intérieur :

C:tmp>perl -we "$inc="0000" ; for (1..5) {print $inc++, "n"}"
0000
0001
0002
0003
0004

C+ mieux




Avatar
Patrice Karatchentzeff
Paul Gaborit a écrit :

À (at) 17 Jan 2008 16:11:36 GMT,
(Jean-Louis MOREL) écrivait (wrote):
La variable incrémentée n'est pas la même variable que celle qui est
initialisée :

% perl -e '$inc='0000' ; for (1..5) {print $incr++, "n"}'
^
il y a un r en trop là ;-)


Ça ne suffit pas ! Il faut aussi être cohérent sur l'utilisation des
guillemets et des apostrophes... ;-)


Tiens, ça m'apprendra à faire le malin... j'ai bêtement recopié son
code dans le one-liner.

Au temps pour moi...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       


Avatar
Mihamina Rakotomandimby
Mag wrote:
Merci, mais c'est en ligne de commande.


Oui, 'ils' m'ont déjà donné des solutions sous cette forme à un moment
et j'avais pas compris. Mais en fait, c'est assez simple "d'integrer" ça
à un script. Suffit de chercher un petit peu.
Donner des exemples dans ce style est utile car ça reduit l'exemple à sa
plus simple expression.

1 2