呼び出し元のスクリプトを使用してperlモジュールを拡張することは可能ですか?
そんな感じ:
#!/usr/bin/perl
use strict;
use Some::Module;
Some::Module::func = sub {
my $self = shift;
# ...
}
my $obj = new Some::Module;
$obj->func();
どうもありがとう!
パッケージに潜水艦を追加したいようです。あなたはほとんどそれを持っています:
|
v
*Some::Package::func = sub {
...
};
^
|
しかし、名前とサブボディの両方を知っている場合、なぜ実行時にそれを行うのですか?多分あなたは実際に欲しい
sub Some::Package::func {
...
}
また
{
package Some::Package;
sub func {
...
}
}
または最近から、
package Some::Package {
sub func {
...
}
}
あなたがこれをしているなら、あなたはほぼ確実に貧弱なデザインを持っていることに注意してください。
あなたはtypeglobsであなたが話していることをすることができます、しかしより簡単な方法はこれをすることです:
use Some::Module;
package Some::Module;
sub func {
my $self = shift;
# ...
}
package main;
my $obj = new Some::Module;
$obj->func();
はい。サブを追加するパッケージを宣言して、追加するだけです。
package Some::Module {
sub func {
my $self = shift;
# ...
}
}
または、詳細についてはperldocパッケージを参照してください。
代わりにサブを上書きする場合は、typeglobsを使用する必要があります。