Schrift
[thread]2908[/thread]

Perl: Linux Befehl ausführen

Leser: 2


<< >> 7 Einträge, 1 Seite
Gast Gast
 2004-06-07 18:18
#29255 #29255
Hallo,
ich habe folgendes Problem. Ich habe einen Linux-Befehl (wie z.B. ls -l) den ich mit Perl aufrufen muss. Dieser Befehl gibt dann eine Ausgabe auf die Kommandozeile zurück.

Nun meine Frage. Wie kann ich den Befehl mit Perl ausführen? Und wie kann ich die Ausgabe in ein Variable schreiben?

Gruß

Christian
renee
 2004-06-07 18:19
#29256 #29256
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
my $var = `ls -l`; # das sind Backticks, KEINE Singlequotes!
\n\n

<!--EDIT|renee|1086617991-->
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/
Strat
 2004-06-08 02:22
#29257 #29257
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
und bei backticks ueberprueft man, ob ein fehler aufgetreten ist, indem man sich den Inhalt der Variablen $! anschaut... (Systemkommandos ohne Fehlerueberpruefung geben oft Fehler, deren Lokalisierung sehr zeitraubend ist...)

Genauere Infos findest Du dazu (und zu anderen - oft besseren Wegen) findest du auf meiner HP -> Vorträge -> Einführung in Perl -> Ausführen von externen Programmen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
ptk
 2004-06-08 13:20
#29258 #29258
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Sollte das nicht $? statt $! sein?
mordur
 2004-06-08 16:41
#29259 #29259
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
open (OUTPUT, 'ls -l |' )
dann steht im Handle OUTPUT der Inhalt des Kommandos ls -l
kannst du dann wie jedes normale Handle per while auslesen
[E|B]
 2004-06-08 18:48
#29260 #29260
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=ptk,08.06.2004, 11:20]Sollte das nicht $? statt $! sein?[/quote]
$? ist die Fehlervaribale bei system() Calls. Fallen Backticks da auch drunter?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
coax
 2004-06-08 22:47
#29261 #29261
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
jabb

perldoc perlvar
Quote
$CHILD_ERROR
$?

The status returned by the last pipe close, backtick (``) command, successful call to wait() or waitpid(), or from the system() operator. [...]
,,Das perlt aber heute wieder...'' -- Dittsche
<< >> 7 Einträge, 1 Seite



View all threads created 2004-06-07 18:18.