GNT sans publicité, site mobile, fonctionnalitées exclusives...

sortie standard: impossible de rediriger dans un fichier

Le
ctobini
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 '>>'

- effectue un | tee fichier_de_sortie

- ouvre un autre filehandle de sortie pour ces même lignes.

Un filehandle de sortie existe déjà pour mettre en sortie certaines
lignes du fichier.

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

Auriez-vous une expérience là-dessus ?

En vous remerciant,

C. Tobini
Lire la réponse

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
espie
Le #132386
In article ctobini
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').

Publicité
Suivre les réponses
Poster une réponse
Anonyme