Code Generation
file: examples/Gorshle.pm
1: package Gorshle;
2:
3: sub import {
4: my $caller=caller();
5: die "do not call from main" if $caller eq 'main';
6: (my $meth=$caller)=~s/::/_/g;
7: my $code="
8: package ".$caller."::Gorshle;
9: use base 'Gorshle';
10: sub ".lc($meth)." { return '$caller' }";
11: eval $code;
12: die $@ if $@;
13: }
14:
15: sub new { return bless {},shift }
16: sub voofen { print "voofen!\n" }
17: 1;
Der generierte Code sieht so aus:
package Waak::Gorshle;
use base 'Gorshle';
sub waak { return 'Waak' }