2013-03-26 3 views
0

Salut j'ai besoin d'avoir la sortie du script perl dans les deux fichiers et STDOUT mais je ne peux pas rediriger la sortie de shel comme ./a.pl > out.log. C'est possible?écrire dans le fichier et STDOUT du script perl

+0

Pourquoi avez-vous besoin de la sortie stdout? Est-ce que quelqu'un va regarder cela, ou est-ce qu'on le redirige aussi? –

+0

@sputnick, la réponse simple à cette question est [man tee] (http://www.openbsd.org/cgi-bin/man.cgi?query=tee). Gayane a utilisé la ligne de commande Unix et n'a référencé aucun autre système d'exploitation. Votre lien ne mentionne même pas tee. –

+0

@JulianFondren Je ne suis pas d'accord, OP semble dire qu'il n'a pas le contrôle de la ligne de commande –

Répondre

4

, vous devez évidemment utiliser

./a.pl | tee out.log 

, mais il semble que vous rejetterez cela. Le meilleur est probablement le File::Tee.

use File::Tee qw(tee); 
tee(STDOUT, '>', 'out.log'); 
2

Essayez ceci:

a.pl | tee out.log

+0

effectivement Le script est exécuté par d'autres personnes, je ne peux pas forcer le à l'appeler d'une autre manière. J'ai donc besoin de faire quelque chose dans le script (rediriger/enregistrer STDOUT ou autre chose) – Gayane

+0

@Gayane, Donc vous dites que vous savez mieux que vos utilisateurs ce qu'ils veulent. Vous ne devriez jamais forcer vos utilisateurs à faire quoi que ce soit. – ikegami

+0

Ils veulent avoir la sortie dans log et dans STDOUT. Mais ils ne veulent pas rediriger la sortie du shell – Gayane

Questions connexes