1

呼び出し元のスクリプトを使用してperlモジュールを拡張することは可能ですか?

そんな感じ:

#!/usr/bin/perl 

use strict; 
use Some::Module; 

Some::Module::func = sub {
  my $self = shift; 
  # ...
}


my $obj = new Some::Module; 

$obj->func(); 

どうもありがとう!

4

3 に答える 3

5

パッケージに潜水艦を追加したいようです。あなたはほとんどそれを持っています:

|
v
*Some::Package::func = sub {
   ...
};
 ^
 |

しかし、名前とサブボディの両方を知っている場合、なぜ実行時にそれを行うのですか?多分あなたは実際に欲しい

sub Some::Package::func {
   ...
}

また

{
   package Some::Package;
   sub func {
      ...
   }
}

または最近から、

package Some::Package {
   sub func {
      ...
   }
}

あなたがこれをしているなら、あなたはほぼ確実に貧弱なデザインを持っていることに注意してください。

于 2012-12-26T23:41:50.250 に答える
4

あなたはtypeglobsであなたが話していることをすることができます、しかしより簡単な方法はこれをすることです:

use Some::Module; 

package Some::Module;

sub func {
  my $self = shift; 
  # ...
}

package main;

my $obj = new Some::Module; 

$obj->func(); 
于 2012-12-26T23:09:47.317 に答える
2

はい。サブを追加するパッケージを宣言して、追加するだけです。

package Some::Module {
  sub func {
  my $self = shift;
  # ...  
  }
}

または、詳細についてはperldocパッケージを参照してください。

代わりにサブを上書きする場合は、typeglobsを使用する必要があります。

于 2012-12-26T23:09:55.273 に答える