localhorst: STDOUT abfangen und im laufenden Programm parsen

Hallo Forum,

ich habe hier ein Programm (oder zumindestens soll es mal eins werden) in dem ich über den Befehl system() das Programm fastacmd aufrufe.
Diese Programm liefert mir dann eine Ausgabe auf STDOUT(bzw jetzt gerade in die Datei test).

Code Ausschnitt:

while ((my $key,my $value) = each %short) {
my $fastacmd_string="fastacmd -d nr -s $value -T >>test";
system($fastacmd_string);
undef($fastacmd_string);
}

Ausgabe aus der Datei oder auch auf STDOUT, schaut gleich aus:

NCBI sequence id: gi|46434594|gb|EAK93999.1|
NCBI taxonomy id: 237561
Common name: Candida albicans SC5314
Scientific name: Candida albicans SC5314

NCBI sequence id: gi|46434569|gb|EAK93975.1|
NCBI taxonomy id: 237561
Common name: Candida albicans SC5314
Scientific name: Candida albicans SC5314

NCBI sequence id: gi|30582963|gb|AAP35711.1|
NCBI taxonomy id: 9606
Common name: human
Scientific name: Homo sapiens

Das ist zB eine Ausgabe von drei Schleifen durchläufen.
Von dieser Ausgabe auf STDOUT möchte ich nun jeweils die Zweite Zeile haben und daraus nur die Nummer, den RegExp bekomme ich schon hin, ich weiß nur nicht wie und wo ich die Ausgabe abfangen kann damit ich sie bearbeiten kann.

Alles in einer Datei zu schreiben um sie dann noch mal komplett durchsuchen zu lassen halte ich für unlogisch, wenn ich eh schon in der Schleife die ganze Datei durchgehe.

Über etwas Hilfe würde ich mich sehr freuen.

Gruß
Localhorst

  1. Von dieser Ausgabe auf STDOUT möchte ich nun jeweils die Zweite Zeile haben und daraus nur die Nummer, den RegExp bekomme ich schon hin, ich weiß nur nicht wie und wo ich die Ausgabe abfangen kann damit ich sie bearbeiten kann.

    Naja, gerne lese ich dir vor was in der Doku bei system steht:
    The return value is the exit status of the program as returned by the wait call. To get the actual exit value divide by 256. See also exec. This is not what you want to use to capture the output from a command, for that you should use merely backticks or qx//, as described in STRING in the perlop manpage. Return value of -1 indicates a failure to start the program (inspect $! for the reason).

    Struppi.

    1. Jupp,

      ich hab auch weiter gesucht und bin dann auf das qx gestoßen.
      Damit läuft es schon, hatte davor wirklich schon viel gesucht und nichts gefunden.

      (Und auf die Idee noch mal bei system() zu schauen bin ich leider nicht gekommen)

      Ist ja auch warm...........

      Gruß und Danke für deine Hilfe