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

sortie standard: impossible de rediriger dans un fichier

1 réponse
Avatar
ctobini
Bonjour,

Je suis en train d'=E9crire un script allant chercher des infos sur 2
bases de donn=E9es locales =E0 partir d'un fichier d'entr=E9e.

Je sous sous Ubuntu 5.10.

L=E0 il y a une chose que je ne comprends absolument pas :

J'ai mis 2 'print' dans une boucle afin de v=E9rifier la sortie, =E7a
marche nickel mais rien ne se passe lorsque :

- je redirige la sortie du script '>>'

- effectue un | tee fichier_de_sortie

- ouvre un autre filehandle de sortie pour ces m=EAme lignes.

Un filehandle de sortie existe d=E9j=E0 pour mettre en sortie certaines
lignes du fichier.

Enfin bref, =E0 partir du moment o=F9 les lignes sortent dans la sortie
standard, je ne comprends pas pourquoi je n'arrive pas =E0 les rediriger
vers un fichier avec '>>'.

Auriez-vous une exp=E9rience l=E0-dessus ?

En vous remerciant,

C=2E Tobini

1 réponse

Avatar
espie
In article ,
ctobini wrote:
Bonjour,

Je suis en train d'écrire un script allant chercher des infos sur 2
bases de données locales à partir d'un fichier d'entrée.

Je sous sous Ubuntu 5.10.

Là il y a une chose que je ne comprends absolument pas :

J'ai mis 2 'print' dans une boucle afin de vérifier la sortie, ça
marche nickel mais rien ne se passe lorsque :

- je redirige la sortie du script '>>'

Si, il se passe des choses. C'est un classique d'Unix. Le mode

de mise en tampon de la sortie standard change selon que celle-ci est
connectee a un terminal ou non. (test -t avec perl).

- Sur un terminal, les lignes apparaissent des qu'elles sont completes.
- Sur une sortie redirigee, on utilise le tampon au maximum.


Confere la doc de perl, en particulier perlvar (autoflush) ou
IO::Handle (pour determiner a la main quand tu veux faire un flush,
ou revenir en mode `ligne par ligne').