Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8958[/thread]

#include <perl.h>perl interpreter: perlembed in C

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
blaise4714
 2007-05-02 14:11
#76360 #76360
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo @lle!
ich habe eine Frage Perl interpreter: Perlemb. Ich habe folgende code in mein C programm eingefügt
Code: (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
36
37
38
39
40
41
42
#include <perl.h>

#ifndef DO_CLEAN
#define DO_CLEAN 0
#endif
#define BUFFER_SIZE 1024
static PerlInterpreter *my_perl = NULL;
main {
int argc;
char **argv;
char **env;
char *embedding[] = { "", "persistent.pl"};
char *args[] = { "", DO_CLEAN, NULL};

int exitstatus = 0;
STRLEN n_a;
my_perl = perl_alloc();
PERL_SYS_INIT3(&argc, &argv,&env);
if ((my_perl = perl_alloc()) == NULL) {
fprintf(stderr, "No Memory!");
exit(1);
}
perl_construct(my_perl);
exitstatus = perl_parse(my_perl, NULL,2, embedding, NULL);
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
if (!exitstatus){
exitstatus = perl_run(my_perl);
args[0] = "tester1.pl";
call_argv("Embed::Persistent::eval_file", G_DISCARD | G_EVAL, args);
eval_pv("@time",TRUE);
eval_pv("$test",TRUE);

if (SvTRUE(ERRSV))
fprintf(stderr,"eval error: %s\n",SvPV(ERRSV, n_a));
}

PL_perl_destruct_level = 0;
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();
exit(exitstatus);
}


Für ein klein Perl programm funktionniert dieses code gut. Ein klein programm ist damit gemeint:
Code: (dl )
1
2
3
4
5
6
7
8
 tester1.pl
$a = 1;
foo($a);

sub foo {

print "$a \n";
}


für ein viel grössere Perl programm (objecktorientiert, for schleifen , if schleifen...), mit grosser @arrays (ungefähr 50 elemente). funktionniert der C code nicht: er gibt keine Werte aus, meldet aber keine fehler;
wo hackt es?
Kann mir jemanden helfen?

danke im voraus
vayu
 2007-05-02 14:53
#76361 #76361
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hast du dein grosses skript schonmal so ausgeführt, ohne dein C-Programm? Läuft es denn da einwandfrei durch?
blaise4714
 2007-05-02 14:59
#76362 #76362
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo Vayu!
danke für deine Antwort.
Es funktionniert ohne C einwandfrei durch.
renee
 2007-05-02 15:05
#76363 #76363
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du auch ein #include <EXTERN.h> drin?

Schau Dir mal perlembed an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
blaise4714
 2007-05-02 16:41
#76364 #76364
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
ja habe ich schon gelesen. Und der Header extern.h ist drin. Die folgende Fehlermeldungen lassen sich zeigen:
# eval error: Global symbol "@array1" requires explicit package name at (eval 1) line 6.
Global symbol "$test" requires explicit package name at (eval 1) line 8...
und soweiter...
Also für alle meine Variablen

thx
vayu
 2007-05-02 16:58
#76365 #76365
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
das hört sich nach strict meldungen an ...

hast du die variablen per "my" deklariert?
blaise4714
 2007-05-02 17:00
#76366 #76366
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nicht alle! einige schon.
liegt da der Fehler?
renee
 2007-05-02 17:04
#76367 #76367
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du musst alle Variablen mit my (bzw. our oder use vars) deklarieren!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
blaise4714
 2007-05-02 17:51
#76368 #76368
User since
2007-04-18
22 Artikel
BenutzerIn
[Homepage] [default_avatar]
cool!
es funktionniert!!! wieso ist so wichtig diese my vor alle variable? (oder use vars)?.

vielen Dank
renee
 2007-05-02 18:16
#76369 #76369
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Lies Dir am besten mal diesen Wiki:Artikel durch.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2007-05-02 14:11.