Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
jakob



Anmeldungsdatum: 31.05.2002
Beiträge: 6

BeitragVerfasst am: 06. Jun 2002 15:29   Titel: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hallo zusammen,

ich bin blutiger Perlanfaenger und moechte nur das Perl ein
Shellkommando fuer mich ausfuehrt, und ich dann mit dem Ergebniss
des Kommandos arbeiten, oder es ausgeben kann.

Bsp.:

---

#!/usr/bin/perl
$time = 'uptime';
print $time;

---

Jetzt bekomm ich nur "uptime" und nicht das Uptimeergebniss zu sehen.

Weiss jemand was ich falsch mache?

Gruss,

Jakob
 
Benutzer-Profile anzeigen Private Nachricht senden

Labba
Gast





BeitragVerfasst am: 06. Jun 2002 18:16   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Du weißt der Variable $time den String 'uptime' zu. Das Beispiel ist wohl eher für die Shell geschrieben und nicht für Perl.

Sowei ich weiß gibt es einen Aufruf : system(), bin mir aber nicht sicher, ob ich das nicht nur mit C verwechsle oder daher kenne.
 

Chris
Gast





BeitragVerfasst am: 06. Jun 2002 22:28   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hi!

code:

#!/bin/perl
$time=system("date");
print $time;




Gruß
Chris
 

Chris
Gast





BeitragVerfasst am: 06. Jun 2002 22:29   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Natürlich nicht "date", sonder "uptime"...
 

Jakob
Gast





BeitragVerfasst am: 07. Jun 2002 9:03   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hallo Chris,

danke fuer dein Posting. Das hat mich schon sehr
weitergebracht.

Doch mein Programm, das die mailq abfragt geht
nicht ganz:

---

#!/usr/bin/perl
$mail=system("mailq");
if $mail="/var/spool/mqueue is empty"{
print "Mails sind erfolgreich versendet worden";
} else {
print "Leider konnte die Mails nicht versendet werden";

---

syntax error at ./time line 3, near "if $mail"
Execution of ./time aborted due to compilation errors.

Kann der bei if $mail die Variable nicht auslesen?

Kennst du vielleicht eine Loesung des Problems?

Gruss,

Jakob
 

Jochen
Gast





BeitragVerfasst am: 07. Jun 2002 12:42   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

1. Vergleich wird in perl wie in C mit "==" geschrieben, nicht mit "=" (Zuweisung).

2. Klammern um den Ausdruck nach if.

3. else-Block hat keine schliessende geschweifte Klammer.

Fazit:
code:

#!/usr/bin/perl
$mail=system("mailq");
if ($mail == "/var/spool/mqueue is empty") {
print "Mails sind erfolgreich versendet worden";
} else {
print "Leider konnte die Mails nicht versendet werden";
}


Besser so?

Jochen
 

Jakob
Gast





BeitragVerfasst am: 07. Jun 2002 14:12   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hallo Jochen,

es geht leider noch nicht so ganz:

kirk@kirk:~/perl> ./mail
/var/spool/mqueue is empty
Mail versendet!

Passt, aber:

[mail:kirk]~/perl$ ./mail
/var/spool/mqueue (4 requests)
----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
g57EOp900553 275 Fri Jun 7 14:24 <kirk@jakobroehrl.de>
<klaus_t@nickles.de>
g57EN4900548 370 Fri Jun 7 14:23 <kirk@jakobroehrl.de>
<klaus_t@nickles.de>
g57EO7900551 435 Fri Jun 7 14:24 <kirk@jakobroehrl.de>
<klaus_t@nickles.de>
g57Eab900646 561 Fri Jun 7 14:36 <kirk@jakobroehrl.de>
<klaus_t@nickles.de>
Mail versendet!
^^^^^
Falsch!

Weisst du warum?


Gruss,

Jakob
 

Jochen
Gast





BeitragVerfasst am: 07. Jun 2002 14:26   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Wenn er immer in den then-Zweig rennt, muss der Ausdruck nach if immer logisch wahr ergeben. Dort würde ich mal nach den Fehler suchen. Hast Du die Lösung mittels Copy'n'Paste übernommen oder abgetippt? Speziell der Punkt 1 ("==" Vergleich, "=" Zuweisung) wird immer gerne falsch gemacht und führt zum ewig wahren Ausdruck.

Jochen
 

Jakob
Gast





BeitragVerfasst am: 07. Jun 2002 17:22   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hi Jochen,

ja ich hab das Script per kopieren/einfuegen uebernommen. Das Problem ist diese Zeile:

if ($mail == "/var/spool/mqueue is empty") {

Es interessiert ihn gar nicht was zw den " " steht.

Weisst du warum?

Gruss,

Jakob
 

ratte
Gast





BeitragVerfasst am: 10. Jun 2002 22:32   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

code:

#!/usr/bin/perl
$mail=`mailq`; # backtickets um mailq herum senden returns zur Variable
if ($mail=~ /\/var\/spool\/mqueue is empty/) # pattern matching with regualar expression
{
print "Mails sind erfolgreich versendet worden";
} else {
print "Leider konnte die Mails nicht versendet werden";
}



ratte
 

Jakob
Gast





BeitragVerfasst am: 13. Jun 2002 12:48   Titel: Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen

Hallo Ratte,

es funkt - vielen Dank.

Gruss,

Jakob
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy