Schrift
[thread]729[/thread]

Script aus Script starten

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2006-05-18 03:52
#7669 #7669
Hallo Ihr alle!

Ich würde gerne in meinem PerlScript am ende einfach ein anderes Perlscript starten -
soweit kein problem.
Nur das dieses gestartete script dann eine Internet seite an den Browser senden soll - wenn ich es direkt aufrufe ist das auch kein problem nur über den aufruf aus dem anderen Script geht das nicht mehr -
Ich hoffe ihr wisst was ich da beachten muss.
Ich hab schon alles mögliche mit system und exce und co probiert - leider noch ohne erfolg - die suche hat mich leider auch nicht weitergebracht!

Freundliche Grüße aus Hofheim

Stefan
Dubu
 2006-05-18 11:17
#7670 #7670
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Dann hast du irgendwo einen Fehler drin. Es funktionieren prinzipiell sowohl system() als auch exec(), ebenfalls Backticks und open() einer Pipe in Verbindung mit print() ... wie auch immer.

Bei system() und exec() erbt der zweite Prozess STDOUT und STDERR vom ersten, sodass eigentlich gar nichts weiter gemacht werden muss, außer in irgendeinem der Prozesse die Seite auszugeben.


PS: do() geht natürlich auch. Womit sich wiederum die Frage stellt, warum es nötig ist, ein Skript aus einem anderen auszurufen, und ob nicht Module die bessere Lösung sind.\n\n

<!--EDIT|Dubu|1147936850-->
renee
 2006-05-18 14:57
#7671 #7671
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig mal *WIE* Du es probiert hast?
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/
Light
 2006-05-31 09:33
#7672 #7672
User since
2006-05-31
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo Ihr!

Danke für eure Antworten !
- Bis vor kurzem war ich noch nicht regestreiert- Jetzt Schon!

Also ich hab das einfach so gemacht:
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
36
37
38
39
40
41
42
43
44
45
46
47
#!c:/perl/bin/perl -w

use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
use Fcntl ':flock';
$| = 1;
use DatumZeit;
my $DZ = new datumzeit;
use htmlprint;
my $html = htmlprint -> new();
use dateieinausgabe;
my $Dat = dateieinausgabe -> new();
use textfilter;
my $TFilter = textfilter-> new();

my $Moment = $DZ->Aktuell();


my $UserName = '';
my $UserText = '';
my $User = '';

$UserName = $cgi->param("betreff");
$UserText = $cgi->param("text");
$User = $cgi->param("Xuser");

#.....
#Hier wird ein Neuer eintrag in eine Datei getätigt!
#.....

#Jetzt soll nur noch der Script gestartet werden,
#der dann die seite neu lädt/anzeigt.
#Als Paramter bekommt er den Benutzernammen. ($NName)

system("showpage.pl?$NName");

#do(showpage.pl?$NName);
# Bei do gabs folgende fehlermeldung:
#Bareword "showpage" not allowed while "strict subs" in use
#at C:/....../data/newlog.pl line 89.
#Execution of C:/....../data/newlog.pl aborted due to
#compilation errors.


1;


Ich freu mich auf eure Antworten

Perlige Grüße aus Hofheim

Euer Stefan
renee
 2006-05-31 10:48
#7673 #7673
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein paar Hinweise zum Stil:

*) Ich würde immer die uses am Anfang zusammenhängend hinschreiben.

*) Konstruktoren immer auf die gleiche Art und Weise aufrufen (z.B. immer mit new Modulname bzw. immer mit Modulname->new())

*) Für Variablen schreibt man im Allgemeinen nur klein

*) Module fangen im Allgemeinen mit einem Großbuchstaben an:

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
43
44
#!c:/perl/bin/perl -w

use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DatumZeit;
use HtmlPrint; # das musst Du auch in der htmlprint.pm abändern und unter HtmlPrint.pm abspeichern
use Dateieinausgabe;
use Textfilter;
use Fcntl ':flock';

$| = 1;

my $cgi = CGI->();
my $dz = DatumZeit->new();
my $html = htmlprint -> new();
my $dat = Dateieinausgabe -> new();
my $t_filter = Textfilter-> new();
my $moment = $dz->Aktuell();


my $username = $cgi->param("betreff");
my $usertext = $cgi->param("text");
my $user = $cgi->param("Xuser");

#.....
#Hier wird ein Neuer eintrag in eine Datei getätigt!
#.....

#Jetzt soll nur noch der Script gestartet werden,
#der dann die seite neu lädt/anzeigt.
#Als Paramter bekommt er den Benutzernammen. ($NName)

system("showpage.pl?$NName");

#do(showpage.pl?$NName);
# Bei do gabs folgende fehlermeldung:
#Bareword "showpage" not allowed while "strict subs" in use
#at C:/....../data/newlog.pl line 89.
#Execution of C:/....../data/newlog.pl aborted due to
#compilation errors.


1;


Bei dem do hättest Du genauso wie bei system mit Anführungszeichen arbeiten sollen, dann hätte es gleich geklappt...

Du solltest Dir vielleicht auch mal die Methode Vars() von CPAN:CGI.pm anschauen. Damit brauchst Du nicht für alle Felder eines Formulars die Werte einzeln mit param abfragen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;
use CGI;

my $cgi = CGI->new();
my %params = $cgi->Vars();

print $params{Xuser};
\n\n

<!--EDIT|renee|1149058132-->
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/
ptk
 2006-05-31 10:48
#7674 #7674
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei do() brauchst du auch Anführungszeichen. Außerdem kannst du die Parameter nicht in der CGI-Schreibweise übergeben, sondern musst die Argumente gesondert angeben (system) oder dir einen anderen Übergabemechanismus ausdenken (do).
Light
 2006-05-31 18:26
#7675 #7675
User since
2006-05-31
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo Ihr,

Danke renee und ptk!
@renee tut mir leid - ich hab mir perl selbst beigebracht - da hat der Style gelitten! - ich will mich aufjedenfall verbessern darum bin ich dir sehr dankbar für deine Tips!
Bevor ich jetzt die sachen noch einmal teste sortiere ich nochmal meinen Code und räum mal ordentlich auf ;-)
vieleicht lager ich auch einfach die benötigte funktion in ein Modul aus. Mal sehen!

Perlige grüße aus Hofheim

Stefan
GwenDragon
 2006-05-31 18:40
#7676 #7676
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Quote
system("showpage.pl?$NName");

Sollte das nicht
Code: (dl )
system("showpage.pl", "$NName");
heißen?
renee
 2006-05-31 19:37
#7677 #7677
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hatte wohl ptk gemeint :p
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/
Dubu
 2006-05-31 23:30
#7678 #7678
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=GwenDragon,31.05.2006, 16:40]
Quote
system("showpage.pl?$NName");

Sollte das nicht
Code: (dl )
system("showpage.pl", "$NName");
heißen?[/quote]
Oder eher
Code: (dl )
system("showpage.pl", $NName);

? 8)
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-05-18 03:52.