perl "system()"

Post Reply
Message
Author
rübezahl

perl "system()"

#1 Post by rübezahl »

Hi!
Ich verwende ein system-aufruf um aus ein Perl-Skript ein Programm zu starten. Leider leuft das Skript erst weiter, nach dem das Program wider geschlossen (beendet) wirt. Wie kann man das anders machen?

mfg Rübezahl

Das Skript:

#! /usr/bin/perl -w

use strict;
use Tk;
use File::Find;

my $zwischen;
my @liste;
my $zufall;
my $ausgabe;
my $anzahl;
my $durchlauf;
my $mw;
my $print;

$mw = MainWindow->new;
$mw->title("scheiß");

$mw->Button(-text => "Verzeichnis aktuallisieren",
-command => \&suchen)->pack;
$anzahl = "1";
foreach my $p (1, 2, 3, 4){
$mw->Radiobutton(-text => $p,
-value => $p,
-variable => \$anzahl)->pack;
};
$mw->Button(-text => "Start",
-command => \&rotiene)->pack;
MainLoop;


sub rotiene {
chomp($anzahl);
open(LISTE, " /backup2/backup/cd/liste.txt") || die "dateihandel fehlgeschlagen";
@liste = <LISTE>;
close(LISTE);

for ($durchlauf =0; $durchlauf < $anzahl ; ++$durchlauf ){
srand;
$zufall = int( rand(@liste));
$ausgabe = $liste[$zufall];
system "gqview $ausgabe \&";
print $ausgabe;
};
};
sub suchen {system ("find /backup2/backup/cd/ -type d > /backup2/backup/cd/liste.txt");
};

Jochen

Re: perl

#2 Post by Jochen »

Da system() eine Shell zum Ausführen startet, würde ich es schlicht erst mal mit einem "&" am Ende des find-Kommandos probieren. Sollte es das nicht tun, noch ein "nohup" davorsetzen.

Probier's mal aus und sag Bescheid, ob es das tut!

Jochen

rübezahl

Re: perl

#3 Post by rübezahl »

Ich meinte den zweiten system-aufruf mit "gqview".

Kurtz vor'm Einschlaffen bin ich selb'st drauf gekommen. Ich hab das Licht noch mal angknipst und den Rächner angeschmissen.
Tatsächlich! Ich hatte vergessen mit chomp() die Varieable $ausgabe vom "
" zu bereinigen, deshalb glaubte die Bash, "&" sei ein seperater Befehl, den Sie nicht kenne.

Was lerne ich daraus? Fehlermeldungen ernst nehmen, da ich nicht vor einem Win-Rächner sitze, haben die durch aus Gehalt.

Post Reply