だから私はPerlでいくつかの黒魔術をいじっています(最終的には私たち全員がそうします:-)そして私はこれらすべてをどのように行うべきかについて少し混乱しています。これが私が始めているものです:
use strict;
use warnings;
use feature ':5.10';
my $classname = 'Frew';
my $foo = bless({ foo => 'bar' }, $classname);
no strict;
*{"$classname\::INC"} = sub {
use strict;
my $data = qq[
package $classname
warn 'test';
sub foo {
print "test?";
}
];
open my $fh, '<', \$data;
return $fh;
};
use strict;
unshift @INC, $foo;
require $foo;
use Data::Dumper;
warn Dumper(\@INC);
$classname->foo;
次のエラーが発生します(require行がコメントアウトされているかどうかによって異なります)。
必要に応じて:
Recursive call to Perl_load_module in PerlIO_find_layer at crazy.pl line 16.
BEGIN failed--compilation aborted.
それなし:
$VAR1 = [
bless( {
'foo' => 'bar'
}, 'Frew' ),
'C:/usr/site/lib',
'C:/usr/lib',
'.'
];
Can't locate object method "foo" via package "Frew" at crazy.pl line 24.
この黒魔術のいくつかをすでに知っているウィザードは誰でも:答えてください!このアルカナについてもっと知りたいです:-)
また注意してください:私はMooseや他のより軽いヘルパーモジュールでこの種のことを行うことができることを知っています、私は主に学ぼうとしているので、そのようなモジュールを使用することの推奨は私の投票を得ません:-)
更新:わかりました、私は私の質問で元々はっきりしていなかったと思います。私は基本的に、外部データ構造に基づいて文字列(操作して補間を行う)を使用してPerlクラスを生成したいと考えています。私がここに持っているものから(それが機能したら)それへ行くのはそれほど難しいことではないと思います。