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

Fonction PAD pour avoir une chaine de caractères toujours de même taille

7 réponses
Avatar
Missions courtes
Bonjour,
Je suis nouveau en PERL.
Je travaille régulièrement avec PHP et MySQL, mais j'ai besoin d'exécuter
régulièrement certains traitements via un CRON.
J'utilise donc des scripts CGI avec le format : " #!/usr/bin/perl ".

Je recherche une fonction PAD pour avoir une chaine de caractères toujours
de même taille.

Pouvez-vous m'aider ?

Cordialement.
Michel
Administrateur du site www.missions-courtes.com

7 réponses

Avatar
Paul Gaborit
À (at) Fri, 17 Dec 2004 16:32:56 +0100,
"Missions courtes" écrivait (wrote):
Bonjour,
Je suis nouveau en PERL.


Ok.

Je travaille régulièrement avec PHP et MySQL, mais j'ai besoin d'exécuter
régulièrement certains traitements via un CRON.


Ok.

J'utilise donc des scripts CGI avec le format : " #!/usr/bin/perl ".


"donc" ? Quel rapport entre des scripts CGI et le cron ? Quel rapport avec la
première ligne du script ?

Je recherche une fonction PAD pour avoir une chaine de caractères toujours
de même taille.


Qu'appelez-vous une fonction PAD ?

En Perl, la longueur d'une chaîne de caractères se calcule via la fonction
'length'. On peut tronquer une chaîne (au début, au mileu ou à la fin) via la
fonction 'substr'. On peut l'allonger en concaténant une autre chaîne via
l'opérateur '.' (point).

Pouvez-vous m'aider ?


À vrai dire, vu le manque de clarté de votre demande, je n'en sais rien... Je
peux tout juste l'espérer ;-)

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

Avatar
Paul Gaborit
À (at) Fri, 17 Dec 2004 17:18:36 +0100,
Paul Gaborit écrivait (wrote):
À (at) Fri, 17 Dec 2004 16:32:56 +0100,
"Missions courtes" écrivait (wrote):
Bonjour,
Je suis nouveau en PERL.


Ok.


J'oubliais ce petit détail :

- On écrit "Perl" lorsqu'on parle du langage.
- On écrit "perl" lorsqu'on parle d'une implémentation de Perl.
- "PERL" n'existe pas... tout du moins dans ce forum ;-)

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


Avatar
Missions courtes
"Paul Gaborit" a écrit dans le message news:


Je travaille régulièrement avec PHP et MySQL, mais j'ai besoin
d'exécuter


régulièrement certains traitements via un CRON.


Ok.

J'utilise donc des scripts CGI avec le format : " #!/usr/bin/perl ".


"donc" ? Quel rapport entre des scripts CGI et le cron ? Quel rapport avec
la

première ligne du script ?


Les CRON de mon hébergeur OVH ne peuvent exécuter que des scripts de type
CGI (pas de scripts PHP).

Je recherche une fonction PAD pour avoir une chaine de caractères
toujours


de même taille.


Qu'appelez-vous une fonction PAD ?


Cela vient de la fonction " str_pad " de PHP qui, par exemple, permet de
compléter à gauche par un caractère donné une chaine de caractères afin que
celle ci ait toujours la même taille.

Par exemple :
$B= str_pad($A, 4, "-"); donne :
$A = "M" => $B = "---M"
$A = "MAR" => $B = "-MAR"
$B comporte toujours 4 caractères, quelque soit la longueur de $A

Existe-t-il une fonction équivalente en PERL ?
Merci.

Je pense que c'est vous qui êtes l'auteur de la documentation qui me sert
actuellement d'aide online :
http://www.perl-gratuit.com/traduction/docfr/perlfunc.html
dans laquelle je n'ai pas su trouver ma fonction PAD.

J'en profite pour vous remercier de votre remarquable travail d'écriture de
cette documentation.

J'ai travaillé sur unix AIX 4.3 pendant 10 ans, et je n'y ai plus touché
depuis 2 ans et demi et ne fais plus que du PHP et MySQL sous Windows. Je
suis rouillé sur ce domaine.

Cordialement.
Michel
Administrateur du site www.missions-courtes.com


Avatar
Paul Gaborit
À (at) Fri, 17 Dec 2004 17:40:16 +0100,
"Missions courtes" écrivait (wrote):
Qu'appelez-vous une fonction PAD ?


Cela vient de la fonction " str_pad " de PHP qui, par exemple, permet de
compléter à gauche par un caractère donné une chaine de caractères afin que
celle ci ait toujours la même taille.

Par exemple :
$B= str_pad($A, 4, "-"); donne :
$A = "M" => $B = "---M"
$A = "MAR" => $B = "-MAR"
$B comporte toujours 4 caractères, quelque soit la longueur de $A

Existe-t-il une fonction équivalente en PERL ?


On obtient le même résultat en faisant :

$b = "-" x (4 - length $a) . $a;

('x' est un opérateur... lire perlop pour en savoir plus)

Si le caractère de remplissage est un blanc, vous pouvez aussi utiliser
'sprintf' :

$b = sprintf("%4s", $a);

Au fait, que se passe-t-il (en PHP avec str_pad) si $A contient plus de 4
caractères ? Dans les deux exemples Perl que je vous donne si $a est trop
longue, elle est copiée intégralement.

Je pense que c'est vous qui êtes l'auteur de la documentation qui me sert
actuellement d'aide online :
http://www.perl-gratuit.com/traduction/docfr/perlfunc.html
dans laquelle je n'ai pas su trouver ma fonction PAD.

J'en profite pour vous remercier de votre remarquable travail d'écriture de
cette documentation.


Je ne suis que l'un des deux traducteurs. La documentation originale
anglophone (perlfunc) est celle qui est disponible (via le programme perldoc)
dans toutes les distributions Perl. Si vous lisez l'anglais, 'perldoc' est le
premier outil d'aide en ligne (avec l'avantage de fonctionner en local et donc
de vous donner la doc de ce qui est réellement installé sur votre machine).

PS : la copie de la documentation française présente sur www.perl-gratuit.com
n'est pas la version la plus récente...

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


Avatar
DominiX
ici même:Missions courtes a écrit
Bonjour,
Je suis nouveau en PERL.
Je travaille régulièrement avec PHP et MySQL, mais j'ai besoin
d'exécuter régulièrement certains traitements via un CRON.
J'utilise donc des scripts CGI avec le format : " #!/usr/bin/perl ".

Je recherche une fonction PAD pour avoir une chaine de caractères
toujours de même taille.



je comprend pas tout cependant est ce que cet exemple aide
$var = pack("A15", $var)
permet d'avoir une chaine de 15 caractere (avec des espace si $var
faisait moins de 15) voir "perldoc -f pack"


Pouvez-vous m'aider ?


achete un bon bouquin sur unix !


Cordialement.
Michel
Administrateur du site www.missions-courtes.com


-- dominix

Avatar
Missions courtes
"Paul Gaborit" a écrit dans le message news:


On obtient le même résultat en faisant :

$b = "-" x (4 - length $a) . $a;

('x' est un opérateur... lire perlop pour en savoir plus)

Si le caractère de remplissage est un blanc, vous pouvez aussi utiliser
'sprintf' :

$b = sprintf("%4s", $a);



Super les 2 solutions.
Merci

Cordialement.
Michel
Administrateur du site www.missions-courtes.com

Avatar
Missions courtes
"DominiX" a écrit dans le message news:
41c320fb$0$29692$

je comprend pas tout cependant est ce que cet exemple aide
$var = pack("A15", $var)
permet d'avoir une chaine de 15 caractere (avec des espace si $var
faisait moins de 15) voir "perldoc -f pack"


Merci.
Cordialement.
Michel
Administrateur du site www.missions-courtes.com