une petite question à propos des printf, sprintf,...
j'ai par exemple une ligne comme ça :
printf "%03d\n",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères
précédé eventuellement de zéros. comment faire pour que le nombre de
caractères soit dans une variable ?
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques Caron
Salut,
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*") may be used instead, in which case Perl uses the next item in the parameter list as the given number (that is, as the field width or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur : Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
Salut,
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate
<kurtzlepirate@yahoo.fr> wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères
précédé eventuellement de zéros. comment faire pour que le nombre de
caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*")
may
be used instead, in which case Perl uses the next item in
the
parameter list as the given number (that is, as the field
width
or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*") may be used instead, in which case Perl uses the next item in the parameter list as the given number (that is, as the field width or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur : Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
kurtz le pirate
In article , "Jacques Caron" wrote:
Salut,
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*") may be used instead, in which case Perl uses the next item in the parameter list as the given number (that is, as the field width or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur : Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques.
j'y pense jamais a ce perldoc ! merci jacques.
dans le chameau bleu, j'avais pas fait attention au paragraphe suivant : <<La ou un nombre pourrait apparaître dans les flags, une astérisque (<<*>>) peut être utilisée en lieu et place, auquel cas Perl utilise la prochaine entité dans la liste d'arguments comme le nombre donné (c'est à dire, comme le champ de largeur ou de precision).>>
pas très explicite et comme il n'y a pas d'exemple...
In article <opso196adwzscttn@news.free.fr>,
"Jacques Caron" <jc@imfeurope.com> wrote:
Salut,
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate
<kurtzlepirate@yahoo.fr> wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères
précédé eventuellement de zéros. comment faire pour que le nombre de
caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*")
may
be used instead, in which case Perl uses the next item in
the
parameter list as the given number (that is, as the field
width
or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques.
j'y pense jamais a ce perldoc ! merci jacques.
dans le chameau bleu, j'avais pas fait attention au paragraphe suivant :
<<La ou un nombre pourrait apparaître dans les flags, une astérisque
(<<*>>) peut être utilisée en lieu et place, auquel cas Perl utilise la
prochaine entité dans la liste d'arguments comme le nombre donné (c'est
à dire, comme le champ de largeur ou de precision).>>
pas très explicite et comme il n'y a pas d'exemple...
On Mon, 11 Apr 2005 10:40:37 +0200, kurtz le pirate wrote:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Je cite perdoc -f sprintf:
Where a number would appear in the flags, an asterisk ("*") may be used instead, in which case Perl uses the next item in the parameter list as the given number (that is, as the field width or precision).
Donc:
printf "%0*dn",$f,$i;
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur : Global symbol "$fd" requires explicit package name
Normal, il ne voit pas où le nom de variable s'arrête. Tu peux écrire:
printf "%0${f}dn",$i;
Jacques.
j'y pense jamais a ce perldoc ! merci jacques.
dans le chameau bleu, j'avais pas fait attention au paragraphe suivant : <<La ou un nombre pourrait apparaître dans les flags, une astérisque (<<*>>) peut être utilisée en lieu et place, auquel cas Perl utilise la prochaine entité dans la liste d'arguments comme le nombre donné (c'est à dire, comme le champ de largeur ou de precision).>>
pas très explicite et comme il n'y a pas d'exemple...
SB
kurtz le pirate writes:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Utiliser la concaténation:
$perl -e ' $a=3;printf "%0".$a."dn",$i;' 000
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Il croit que la vrariable s'appelle $fd, il faut utiliser les accolades pour lever l'ambiguïté:
$perl -e '$f=3;printf "%0${f}dn",$i;' 000
-- Encyclopédie libre, gratuite, à laquelle tout le monde peut collaborer: http://fr.wikipedia.org/ Chercher dans les documents sous licence Creative Commons: http://search.yahoo.com/cc
kurtz le pirate <kurtzlepirate@yahoo.fr> writes:
j'ai par exemple une ligne comme ça :
printf "%03dn",$i;
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères
précédé eventuellement de zéros. comment faire pour que le nombre de
caractères soit dans une variable ?
Utiliser la concaténation:
$perl -e ' $a=3;printf "%0".$a."dn",$i;'
000
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Il croit que la vrariable s'appelle $fd, il faut utiliser les
accolades pour lever l'ambiguïté:
$perl -e '$f=3;printf "%0${f}dn",$i;'
000
--
Encyclopédie libre, gratuite, à laquelle tout le monde peut
collaborer: http://fr.wikipedia.org/
Chercher dans les documents sous licence Creative Commons:
http://search.yahoo.com/cc
qui, comme vous le savez, imprime la valeur de $i sur 3 caractères précédé eventuellement de zéros. comment faire pour que le nombre de caractères soit dans une variable ?
Utiliser la concaténation:
$perl -e ' $a=3;printf "%0".$a."dn",$i;' 000
j'ai bien sur essayé %0$fd avec $f=3 et ça marche pas et j'ai l'erreur :
Global symbol "$fd" requires explicit package name
Il croit que la vrariable s'appelle $fd, il faut utiliser les accolades pour lever l'ambiguïté:
$perl -e '$f=3;printf "%0${f}dn",$i;' 000
-- Encyclopédie libre, gratuite, à laquelle tout le monde peut collaborer: http://fr.wikipedia.org/ Chercher dans les documents sous licence Creative Commons: http://search.yahoo.com/cc