Thread Subroutine xyz redefined at... verhindern (8 answers)
Opened by bianca at 2015-02-23 08:29

bianca
 2015-02-23 08:29
#179828 #179828
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Gibt es eigentlich eine Möglichkeit, Fehlermeldungen beim require abzufangen und das Hauptscript dann nicht sterben zu lassen?
Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
use strict;
use warnings;

my @dispatchtab = (
    {
        moduldatei  => 'test_extern.pl',
        aufruf      => \&testsub,
    },
    {
        moduldatei  => 'test_extern2.pl',
        aufruf      => \&testsub,
    },
);
for my $ref (@dispatchtab) {
    my $script = 1;
    eval <<"EVAL_CODE";
require "$ref->{moduldatei}" or $script = 0;
EVAL_CODE
    if ($script) { print $ref->{aufruf}->('a'); }
}


Die Scripte test_extern.pl und test_extern2.pl sehen identisch aus wie folgt:
Code (perl): (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl
use strict;
use warnings;

sub testsub {
    return "Gewonnen! Sub $_[0]\n";
}
return '1';


Wie kann ich jetzt die Meldung
Quote
Undefined subroutine &main::testsub called at test.pl line 20.
abfangen und vor allen Dingen das Script nicht sterben lassen?
10 print "Hallo"
20 goto 10

View full thread Subroutine xyz redefined at... verhindern