0

Perl の動的コードに関する質問があります。コードを実行するために使用できる Perl の構造はありますか。

例えば、

$command = " some command";
$perl -> execute($command);

$command実行時間の変更。私の専門用語で申し訳ありません。そうでないとどう説明したらいいのかわからない。

私はこれを達成しようとしています:配列内の各参照に対していくつかのコマンドを実行する関数があります。

 ...insert example call to function...

各参照に識別子が関連付けられているとしましょう。

 ...insert sample reference...
 ...say something about how you determine the identifier...
 ...say something about how you want to use the identifier...

コマンドの一部は参照ごとに異なり、識別子の一部があり、完全な識別子のリストがないため、配列を反復処理して参照ごとに実行することはできません。たとえば$r0、識別子が「r0」の場合、コマンド$r0->test("r0")を実行する必要があります。

4

2 に答える 2

5

これが外部コマンドの場合は、systemそのようなものに 、バッククォート、または Perl モジュールのいずれかを使用できます。

実行時に Perl コードをコンパイルして実行する場合は、eval. 多くの場合、人々evalは物事を成し遂げるためのより簡単な方法を理解していないために乱用します。

状況に基づいてどのサブルーチンを実行するかを決定したい場合は、ソフト参照 (いや!でも便利な場合もあります)、ディスパッチ テーブルなどを使用するなど、さまざまなことができます。

変数の値に基づいてメソッドを選択する場合も、簡単です。

 $object->$method(...)

ただし、何を達成しようとしているのかを伝える必要があります。


あなたが何を求めているのかはまだわかりませんが、動的なもののようには聞こえません。これがあなたが説明している状況だと思います。これがどれほど近いか教えてください:

 my @array = ( [ 'r0', 'foo', 'bar' ] );

 foreach my $element ( @array ) {
      my( $identifier, @other_stuff ) = @$element;
      $element->test( $identifier );
      }

いくつかのサンプル要素と、たとえ疑似コードであっても、あなたが持っているものの概要を示すことができれば、本当に役に立ちます. 私たちはあなたが質問で教えてくれたことだけを知っています。あなた自身の問題についてあなたが知っているすべてではありません。

于 2010-09-24T20:30:07.320 に答える
1

使用できますeval

eval($command);

マニュアルから:

評価EXPR

最初の形式では、EXPR の戻り値が解析され、小さな Perl プログラムであるかのように実行されます...

于 2010-09-24T20:27:19.377 に答える