- PR -

perlのサブルーチン

1
投稿者投稿内容
odik
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 69
投稿日時: 2007-07-12 20:09
perlについての基本的な質問です。
宜しくお願します。

perlのサブルーチンがあるとします。

sample.pm
==============
sub A(){
my $str = test;
return($str);
}
1;
==============

あるperlから上記のサブルーチンを呼び出すには、
my $STR = sample::A();
とすればよいのですが、

あるシェルスクリプトから、同じように上記のサブルーチンを
呼び出すことは出来るのでしょうか?

関数ではないので無理なように思うのですが、
もし出来るとすればどのようにすればよいのでしょうか?
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2007-07-13 12:43
こんにちは。

そもそも、シェルスクリプトとその他言語では、関数/サブルーチンの考え方が違います。
なおかつ、ある言語の関数/サブルーチンを、シェルスクリプトのサブルーチンとして直接使う方法はありません。
( 言語処理機能を組み込んだシェルなら分かりませんが… )

あえてやるとすれば、シェルのプロセス置換を用いることになるでしょうか。
何のことはなく、perlのサブルーチンを使うperlスクリプトを実行した出力内容を利用するだけの話です。

$ STR=$( perl -Msample -e 'print sample::A();' )
$ echo "$STR"
odik
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 69
投稿日時: 2007-07-13 20:00
angel様

ご返信頂きまして有難うございます。
-eというオプションがあるのですね。
勉強になりました。

1

スキルアップ/キャリアアップ(JOB@IT)