Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen
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
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
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.
Sowei ich weiß gibt es einen Aufruf : system(), bin mir aber nicht sicher, ob ich das nicht nur mit C verwechsle oder daher kenne.
Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen
Hi!
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/perl
$time=system("date");
print $time;
</font><hr></pre></blockquote>
Gruß
Chris
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/perl
$time=system("date");
print $time;
</font><hr></pre></blockquote>
Gruß
Chris
Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen
Natürlich nicht "date", sonder "uptime"...
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
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
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:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/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";
}</font><hr></pre></blockquote>
Besser so?
Jochen
2. Klammern um den Ausdruck nach if.
3. else-Block hat keine schliessende geschweifte Klammer.
Fazit:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/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";
}</font><hr></pre></blockquote>
Besser so?
Jochen
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
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
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
Jochen
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
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
Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/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";
}
</font><hr></pre></blockquote>
ratte
#!/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";
}
</font><hr></pre></blockquote>
ratte
Re: Perlanfaenger: Shellkommandos vom Perl ausfuehren lassen
Hallo Ratte,
es funkt - vielen Dank.
Gruss,
Jakob
es funkt - vielen Dank.
Gruss,
Jakob