サーバに関する情報を文字列として返す、特定の関数を含むライブラリをPerlで作成しました。この関数をシェルから直接呼び出すことはできますか?シェルスクリプトからPerl関数を呼び出すにはどうすればよいですか?
私の上司は「シェルから直接呼び出すことはできますか?」彼はそれを言ったので、私はそれを行うことができるはずだと思うが、私はそれをどうやって行うのだろうか?
サーバに関する情報を文字列として返す、特定の関数を含むライブラリをPerlで作成しました。この関数をシェルから直接呼び出すことはできますか?シェルスクリプトからPerl関数を呼び出すにはどうすればよいですか?
私の上司は「シェルから直接呼び出すことはできますか?」彼はそれを言ったので、私はそれを行うことができるはずだと思うが、私はそれをどうやって行うのだろうか?
perlのコマンドライン引数は、分かりにくいので、関数を呼び出すより簡単なperlスクリプトで記述します。その後、実行
#!/usr/bin/perl
require 'library.pl';
say library::getServerInformation();
を:たとえば、含まれているスクリプトをserverinfo
作成
chmod u+x serverinfo
このようにそれを行うことの利点は、機能そのものが変更された場合、スクリプトの出力と引数を補正することができるです。このようなコマンドラインスクリプトは、インプリメンテーションが変更されたときに変更すべきではないAPIと考えることができます。
perl -MServerlib=server_information -e 'print server_information()'
これを行う別の方法ですが、Serverlibがserver_information
サブをエクスポートする場合のみです。そうでない場合は、代わりに以下を行う必要があります。
perl -MServerlib -e 'print MServerlib::server_information()'
OPが何をするようになっているかのように聞こえます。 – si28719e
+1ですが、これにはバックスクリプトを使用してシェルスクリプトで使用するためにそのプリントからの出力を変数に取り込む例も含める必要があります。 –
「man perl」を試しましたか? – Ismael
うーん、誰も言葉を修正しないと、これは本当に貴重な質問かと思います... – Mark