appeler le sous-programme du script shell à partir du script perl et lui transmettre certains parameters

Comment puis-je appeler le sous-programme du script shell et lui transmettre certains parameters? quelque chose comme ci-dessous?

#!/usr/bin/perl ### need something like this source file.sh routine; # <-- this is supposed to be part of file.sh which is called # from perl script and some parameter are passed to it 

Non, ce sont deux langues différentes. Tout ce que vous pouvez faire est d’appeler un script shell à partir de Perl en tant que processus enfant, en utilisant, par exemple, system() ou qx() .

Ecrivez votre programme dans une langue, Perl ou shell, n’essayez pas de les mélanger.

OK, il est possible d’exporter une fonction depuis un shell, puis de l’parsingr et de l’exécuter en Perl, mais c’est beaucoup de travail, d’insécurité, et en général cela ne vaut pas la peine.

Un problème autour de ce problème serait d’isoler le contenu de la routine de file.sh dans le fichier sous-fichier.sh – alors vous pouvez le faire dans Perl:

 @cmdargs=('subfile.sh', $arg1, "arg2"); system(@cmdargs); 

Le premier élément de liste est la commande, le second la valeur d’une variable Perl transmise en tant qu’argument à subfile.sh; le troisième est un littéral passé en argument à subfile.sh.

Évitez les problèmes de maintenance entre la copie du contenu de la routine dans subfile.sh et file.sh en écrivant un wrapper pour subfile.sh dans file.sh et appelez-le simplement avec les arguments appropriés, comme toute autre commande shell, partout où vous appelez routine dans fichier.sh.

Je pense que ça marcherait.