Thread Ausführung von in Hashschlüsseln gespeicherten Subs (6 answers)
Opened by MarkusH at 2014-01-02 21:39

MarkusH
 2014-01-02 21:39
#172802 #172802
User since
2012-04-08
161 Artikel
BenutzerIn
[default_avatar]
Hallo,
a guats neis erstmal!
In einem Skalar wird über ein Script generierter Perl Code gespeichert und in einem Hash abgelegt.
An anderer Stelle soll dann der über den Hashschlüssel ausgewählte Code ausgeführt werden. Leider klappt das nicht und ich weiß jetzt nach Stunden des Probierens, lesens und googelns nicht mehr weiter;

In dem Beispielcode funktioniert Schlüssel A nicht, O jedoch schon.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl -w
use strict;

my $A = q(my $arg = shift;print "A ";print "$arg\n";);
my $B = q(print "B\n";);
my %subs = (
            A => sub { $A },
            B => sub { $B },
            O => sub {my $arg = shift;print "O ";print "$arg\n";}
        );

for my $key (keys %subs ) {
    eval &{$subs{$key}}(10) ;
}


Ausgabe:
Code: (dl )
1
2
3
4
5
A 
Use of uninitialized value $arg in concatenation (.) or string at (eval 17)[F:\Perl-1.pl:13] line 1.

O 10
B

Last edited: 2014-01-02 21:54:23 +0100 (CET)
$q =~ /(bb|[^b]{2})/

View full thread Ausführung von in Hashschlüsseln gespeicherten Subs