これは、 「自分のシステム コールが pp でラップした Perl プログラムで動作しないのはなぜですか?」という無関係な問題を切り抜けようとする私の試みです。 Linux システムで簡単な Perl スクリプトを作成しました。
new-net:~/scripts # cat ls_test.pl
@ls_out = `ls -l`;
map { print "$_\n" } @ls_out;
$out = `sh out_test.sh`;
print "$out\n";
このスクリプトは、単純なシェル ファイルを呼び出します。
new-net:~/scripts # cat out_test.sh
echo "I'm here"
pp を使用して、Perl スクリプトとシェル スクリプトを ls_test にパックしました。
new-net:~/test # unzip -l ls_test アーカイブ: ls_test 長さ 日付 時間 名前 -------- ---- ---- ---- 0 07-13-09 16:41 スクリプト/ 436 07-13-09 16:41 マニフェスト 214 07-13-09 16:41 META.yml 93 07-13-09 16:41 スクリプト/ls_test.pl 538 07-13-09 16:41 スクリプト/main.pl 16 07-13-09 16:20 out_test.sh -------- ------- 1297 6 ファイル
パックされたファイルを空のディレクトリで実行すると、シェル スクリプトが見つかりません。
new-net:~/test # ./ls_test 合計 3391 -rwxr-xr-x 1 ルート ルート 3466177 7 月 13 日 16:41 ls_test sh: out_test.sh: そのようなファイルまたはディレクトリはありません
シェル スクリプトをディレクトリにコピーすると、パックされたスクリプトが期待どおりに実行されます。
new-net:~/test # ./ls_test
合計 3395 -rwxr-xr-x 1 ルート ルート 3466177 7 月 13 日 16:41 ls_test -rw-r--r-- 1 ルート root 16 Jul 13 16:20 out_test.sh 私はここにいます
では、pp
パックされたスクリプトはインクルード ファイルをどこで見つけることができるのでしょうか? また、そのインクルード ファイルへの呼び出しは、元の Perl スクリプトでどのように構成する必要がありますか?