C'est ma tentative de couper à travers les questions étrangères soulevées "Why don’t my system calls work in the Perl program I wrap with pp?" J'ai créé un script simple Perl sur un système linux:Où pp (PAR) déballe-t-il les fichiers d'ajout (-a)?
new-net:~/scripts # cat ls_test.pl
@ls_out = `ls -l`;
map { print "$_\n" } @ls_out;
$out = `sh out_test.sh`;
print "$out\n";
Ce script appelle un simple fichier shell:
new-net:~/scripts # cat out_test.sh
echo "I'm here"
je p pour emballer le script Perl avec le script shell dans ls_test:
new-net:~/test # unzip -l ls_test Archive: ls_test Length Date Time Name -------- ---- ---- ---- 0 07-13-09 16:41 script/ 436 07-13-09 16:41 MANIFEST 214 07-13-09 16:41 META.yml 93 07-13-09 16:41 script/ls_test.pl 538 07-13-09 16:41 script/main.pl 16 07-13-09 16:20 out_test.sh -------- ------- 1297 6 files
Si je cours le fichier compressé dans un autre répertoire mpty, le script shell ne se trouve pas:
new-net:~/test # ./ls_test total 3391 -rwxr-xr-x 1 root root 3466177 Jul 13 16:41 ls_test sh: out_test.sh: No such file or directory
Si je copie le script shell dans le répertoire, le script emballé fonctionne comme prévu:
new-net:~/test # ./ls_test
total 3395 -rwxr-xr-x 1 root root 3466177 Jul 13 16:41 ls_test -rw-r--r-- 1 root root 16 Jul 13 16:20 out_test.sh I'm here
Alors, où un attendre scénario emballé pp
trouver un fichier inclus? Et comment un appel à ce fichier inclus doit-il être configuré dans le script Perl d'origine?
à partir de perldoc PAR; run Le nom d'un script à exécuter dans le par. Les sorties sont terminées. Est-ce que cela signifie que tout appel à un fichier ajouté quitte le script empaqueté? Le problème que j'essayais à l'origine de résoudre est un script POE/TK qui appelle divers fichiers externes à partir des commandes du widget. – jpolache