Thread Debugging Hilfe bei Can't use string ("1") as a subroutine ref while "strict refs" in use
(8 answers)
Opened by bianca at 2020-12-16 11:25
Habe schon was gefunden:
test_require1.pl: 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 23 24 25 26 27 28 29 30 31 32 33 34 35 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; local $Data::Dumper::Purity; $Data::Dumper::Purity = 1; local $Data::Dumper::Useqq; $Data::Dumper::Useqq = 1; local $Data::Dumper::Deparse = 1; $Data::Dumper::Deparse = 1; local $Data::Dumper::Sortkeys; $Data::Dumper::Sortkeys = sub { my ($hash) = @_; return [(sort {lc $a cmp lc $b} keys %$hash)]; }; use 5.010; system 'cls'; require "./test_require3.pl"; my @dispatch = ( { moduldatei => "./test_require2.pl", aufruf_sub => \&subname, }, ); my %varenv = (test1 => 'start'); my $href = $dispatch[0]; require $href->{moduldatei}; $href->{aufruf_sub}(\%varenv); say Dumper(\%varenv); test_require2.pl: wie oben test_require3.pl: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 #!/usr/bin/perl use strict; use warnings; no warnings 'void'; print "3 wird geladen: ".join(' ~ ',caller)."\n"; sub { my ($varenv) = @_; $varenv->{test3} = 'hier bin ich!'; $varenv->{zeiger_geladen} = defined; } Damit bekomme ich den Fehler. Frage: warum wirft das test_require2.pl einen Fehler? Das dürfte doch aufgrund von !defined $varenv->{zeiger_geladen} gar nicht zum require kommen!? Editiert von bianca: Hinweis zu Code 2 ergänzt Last edited: 2020-12-16 11:32:47 +0100 (CET) 10 print "Hallo"
20 goto 10 |