Probleme d'execution de la commande Unix echo via le perl

Probleme d'execution de la commande Unix echo via le perl - Perl - Programmation

Marsh Posté le 29-03-2004 à 16:31:32    

Bonjour,
 
j'ai un probleme avec la commande echo du perl :/
 

Code :
  1. sub mafonction()
  2. {
  3. use Shell qw(echo);
  4. $test=echo("Message",'>',"/fichier" );
  5. }


 
En lançant la commande echo via le Perl je n'arrive point à ecrite Message dans le fichier :/
Pourtant $test me renvoie bien echo "Message" > fichier :/
 
Quelqu'un aurait une idée ?

Reply

Marsh Posté le 29-03-2004 à 16:31:32   

Reply

Marsh Posté le 29-03-2004 à 16:45:42    

t'aurrais pas oublié de printer $test des fois ???
par ailleurs tu feras gaffe que ton fichier est envoyé sur "/" comme chemin!

Reply

Marsh Posté le 29-03-2004 à 18:07:04    

anapajari a écrit :

t'aurrais pas oublié de printer $test des fois ???
par ailleurs tu feras gaffe que ton fichier est envoyé sur "/" comme chemin!
 


j'ai fais un print $test, sans succes :/

Reply

Marsh Posté le 30-03-2004 à 03:13:55    

Tu as les droits d'écriture sur ton fichier ? Sinon le pod parle d'un bug qui laissait les simple quote dans la commande exécutée.

Reply

Marsh Posté le 30-03-2004 à 07:11:50    

matafan a écrit :

Tu as les droits d'écriture sur ton fichier ? Sinon le pod parle d'un bug qui laissait les simple quote dans la commande exécutée.


Euh, oui j'ai les droits d'ecriture.
J'arrive toujours pas à remplir ce fichier :/

Reply

Marsh Posté le 30-03-2004 à 09:46:43    

bin ecoute j'ai pris ton script tel quel copié collé et ça marche ...
par contre contre ça envoie le fichier dans '/'.
Tu es sur des droits en écriture?

Reply

Marsh Posté le 30-03-2004 à 10:48:55    

Essaie ceci pour voir :
 

Code :
  1. sub mafonction
  2. {
  3.     eval { `echo Message >/fichier`; };
  4.     if ($@)
  5.     {
  6.         print "Pb retour de eval : $@";
  7.     }
  8. }


 
Edit : ce sont des anti-quotes qui entourent la commande echo (touche 7 du pavé alphanumérique)


Message édité par Aricoh le 30-03-2004 à 10:51:02

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 30-03-2004 à 11:10:28    

si on a le droit de faire autrement, perso j'ai tendance à préferer:

Code :
  1. my $cmd="echo Message > /fichier";
  2.   system($cmd);


mais comme d'hab TMTOWTDI...

Reply

Marsh Posté le 30-03-2004 à 14:10:25    

pourquoi ne pas simplement ouvrir le fichier en ensuite faire des  
 

Code :
  1. print FSOR "montexte";


 
ou alors
 

Code :
  1. `echo "toto" > monfichier`;


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 31-03-2004 à 18:31:28    

anapajari a écrit :

si on a le droit de faire autrement, perso j'ai tendance à préferer:

Code :
  1. my $cmd="echo Message > /fichier";
  2.   system($cmd);


mais comme d'hab TMTOWTDI...


Bien vu, mais il peut se poser un probleme :  
si j'execute une commande shell par systeme et que la commande shell se plante (ou se bloque) mon programme perl se bloque lui aussi :/
Mais bon, c'est mieux que rien

Reply

Marsh Posté le 31-03-2004 à 18:31:28   

Reply

Marsh Posté le 01-04-2004 à 14:52:32    

samuelp a écrit :

Bonjour,
 
En lançant la commande echo via le Perl je n'arrive point à ecrite Message dans le fichier :/
Pourtant $test me renvoie bien echo "Message" > fichier :/
 
Quelqu'un aurait une idée ?


 
Je te déconseille de mettre des donnés dans un fichier de cette
façon, tu lances un process à chaque fois ce qui est lourd.
 
Je te propose la solution suivante :
 

Code :
  1. my $file = '/foo/bar/my_file';
  2. my $message = "Hello world\n";
  3. open FILE, ">$file" or die "Unable to open $file : $!";
  4. print FILE $message;
  5. close FILE;


 
Si tu veux ajouter des données au fichier et ne pas
réécraser le fichier à chaque fois utilise >> à la place de
> dans le open
 
 
David "Sniper" Rigaudiere
Les mongueurs de Perl - http://www.mongueurs.net
Les journées Perl 2004 - http://conferences.mongueurs.net/2004


Message édité par drigaudiere le 01-04-2004 à 15:37:45
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed