Thread Bad name after...
(52 answers)
Opened by bianca at 2015-02-19 12:08
Der Name der Package ist egal, er muss nur bekannt sein und eindeutig. Untenstehender Code nimmt den Dateinamen und wirft alles raus, was nicht \w ist. Dann wird über den Namen der Package die Code-Referenz gezogen und ausgeführt.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 use strict; use warnings; my @units = qw(foo.pm bar.pm); # Alle Funtionen heißen sub foo my $arg = 0; foreach my $unit(@units){ my $packname = $unit; $packname =~ s/\W//g; my $source = do{ my $fh = IO::File->new; $fh->open($unit, "r") or die $!; read($fh, my $buffer, -s $fh); $fh->close; "package $packname;\n".$buffer; }; eval "$source" or die $@; my $coderef = $packname->can('foo'); $coderef->(++$arg); } Dateien foo.pm, bar.pm Last edited: 2015-02-20 10:22:31 +0100 (CET) |