Hendrik Kammholz: Bash Befehle in Perl, z.B. system

Beitrag lesen

Hallo an Alle!
Folgendes Perl-Script habe ich - leicht abgewandelt - abgetippt:

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Vergleich = system("chmod 0777 /home/gruppen/");

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print $Vergleich."\n";
if($Vergleich == 0) {
  print "Alles in Ordnung!\n";
}
else {
  print "Nix gudd!\n";
}
print "</body></html>\n";

Bei Ausführung mit einem Browser hat der Perl-Interpreter den system-Befehl nicht ausgeführt, anstatt dessen erhalte ich folgende Meldung am Bildschirm:

256 Nix gudd!

Ich muss dazu sagen, dass der system-Befehl auf viele Bash-Befehle nicht reagiert. Mein eigentliches Ansinnen ist die Integration von Befehlen wie “useradd”, “userdel” usw.. in Perl-Scripte. Bisher ist mir die Umsetzung mit system noch nie gelungen. Gleiches gilt für exec ud Backtics.
Rufe ich das gleiche Programm jedoch über die Bash-Befehlszeile auf, dann funktioniert es.

linux:/srv/www/cgi-bin # /usr/bin/perl -w ./bs4.pl
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Test-Ausgabe</title></head><body>
0
Alles in Ordnung!
</body></html>

Was mache ich falsch? Der Perl-Interpreter liegt in “/usr/bin/”. Ich arbeite (als Anfänger) mit Suse 9.2.
Viele Grüße:
H. Kammholz