OVH Cloud OVH Cloud

Comment faire la synchronisation des fichiers que lors du close?

4 réponses
Avatar
saf
Je me suis demandé si Perl écrit directement sur un fichier avec la
commande:
print FILEHANDLE "toto42";
ou
print FILEHANDLE "toto42\n";

Est-il possible de lancer Perl avec une option ou de mettre un flag dans
son script en place pour que Perl ecrit tout ce qui a été passé à
"print FILEHANDLE" seulement lorsqu'on appelle la commande
"close(FILEHANDLE);"?

--
saf

4 réponses

Avatar
Nicolas George
saf wrote in message <der2vr$q5o$:
Je me suis demandé si Perl écrit directement sur un fichier avec la
commande:
print FILEHANDLE "toto42";
ou
print FILEHANDLE "toto42n";


Ni l'un ni l'autre, sauf si FILEHANDLE désigne un terminal, auquel cas le
deuxième flushe effectivement.

Est-il possible de lancer Perl avec une option ou de mettre un flag dans
son script en place pour que Perl ecrit tout ce qui a été passé à
"print FILEHANDLE" seulement lorsqu'on appelle la commande
"close(FILEHANDLE);"?


Pas à ma connaissance, mais c'est assez facile à faire manuellement :

$filehandle .= $foo;

au lieu de

print FILEHANDLE $foo

et on finit par

print FILEHANDLE $filehandle;

Avatar
saf
Nicolas George wrote:
saf wrote in message <der2vr$q5o$:

Je me suis demandé si Perl écrit directement sur un fichier avec la
commande:
print FILEHANDLE "toto42";
ou
print FILEHANDLE "toto42n";



Ni l'un ni l'autre, sauf si FILEHANDLE désigne un terminal, auquel cas le
deuxième flushe effectivement.


Est-il possible de lancer Perl avec une option ou de mettre un flag dans
son script en place pour que Perl ecrit tout ce qui a été passé à
"print FILEHANDLE" seulement lorsqu'on appelle la commande
"close(FILEHANDLE);"?



Pas à ma connaissance, mais c'est assez facile à faire manuellement :

$filehandle .= $foo;

au lieu de

print FILEHANDLE $foo

et on finit par

print FILEHANDLE $filehandle;


C'est ce que je voulais aussi faire, mais ca demande de changer pas mal
de scripts Perl! :-(

--
saf


Avatar
Jacques Caron
Salut,

On Sun, 28 Aug 2005 03:12:20 +0200, saf wrote:

Je me suis demandé si Perl écrit directement sur un fichier avec la
commande:
print FILEHANDLE "toto42";
ou
print FILEHANDLE "toto42n";

Est-il possible de lancer Perl avec une option ou de mettre un flag dans
son script en place pour que Perl ecrit tout ce qui a été passé à
"print FILEHANDLE" seulement lorsqu'on appelle la commande
"close(FILEHANDLE);"?


perldoc IO::Handle, voir du côté de setbuf, ça devrait faire ce que tu
veux (en restant sage).

Sinon il y a des méthodes plus tordues avec un peu d'overloading sur print
et close, je suppose...

Jacques.

Avatar
Jacques Caron
Salut,

On Sun, 28 Aug 2005 03:12:20 +0200, saf wrote:

Je me suis demandé si Perl écrit directement sur un fichier avec la
commande:
print FILEHANDLE "toto42";
ou
print FILEHANDLE "toto42n";

Est-il possible de lancer Perl avec une option ou de mettre un flag dans
son script en place pour que Perl ecrit tout ce qui a été passé à
"print FILEHANDLE" seulement lorsqu'on appelle la commande
"close(FILEHANDLE);"?


perldoc IO::Handle, voir du côté de setbuf, ça devrait faire ce que tu
veux (en restant sage).

Sinon il y a des méthodes plus tordues avec un peu d'overloading sur print
et close, je suppose...

Jacques.