norman: dateien mit variablen handler öffnen

guten morgen,

hab 'n arges problem mit dem öffnen von mehreren ausgabekanälen bzw. mit dem ansprechen von diesen:

my @ausgaben = ($output_standard,$output_seiten);
foreach(@ausgaben) {
 open('FILEOUT.$_', ">$_") || die "Kann $_ nicht schreiben!";
 print 'FILEOUT.$_' "test\n"; # HIER GIBTS STRESS
 close('FILEOUT.$_');
}

hat jemand ahnung wie die print-ausgabe gestaltet werden muss, um stress mit dem perl-interpreter zu vermeiden?

grüsse
norman

  1. guten morgen,

    print 'FILEOUT.$_' "test\n"; # HIER GIBTS STRESS

    was meinst du mit stress (fehlermeldung?)?
    lass doch die ausgabe in ein array schreiben und gib sie nach schliessen des handlers aus.

    gruß.
    roger.

    1. hi roger,

      der interpreter scheisst ne fehlermeldung:

      String found where operator expected at auswertungxl_zus2.pl line 445, near "'FILEOUT.$_' "test\n""
              (Missing operator before  "test\n"?)
      syntax error at auswertungxl_zus2.pl line 445, near "'FILEOUT.$_' "test\n""
      Execution of auswertungxl_zus2.pl aborted due to compilation errors.

      er aktzeptiert scheinbar 'FILEOUT.$_' nicht als datei-handler, nur FILEOUT würde gehn.

      norman

      guten morgen,

      print 'FILEOUT.$_' "test\n"; # HIER GIBTS STRESS

      was meinst du mit stress (fehlermeldung?)?
      lass doch die ausgabe in ein array schreiben und gib sie nach schliessen des handlers aus.

      gruß.
      roger.

  2. Hallo norman,

    Ich glaube, ich weiß, wo das Problem ist.Du musst für Dateihandler die Klasse IO benutzen. Ich weiß nicht mehr genau, welche Features diese Klasse hat, aber da solltest du dich selber schlaumachen.

    Jedenfalls kannst du durch diese Klasse Dateihandler in eine Liste packen, was sonst nicht geht.

    Grüße

    Wolfram Hüttermann

  3. so gehts:

    my @ausgaben = ($output_standard,$output_seiten);
    foreach(@ausgaben) {
     open('FILEOUT.$_', ">$_") || die "Kann $_ nicht schreiben!";
            select('FILEOUT.$_');
     print "test\n";
     close('FILEOUT.$_');
    }

    norman

  4. hab 'n arges problem mit dem öffnen von mehreren ausgabekanälen bzw. mit dem ansprechen von diesen:

    mehrere Ausgabekanäle?
    Bist du sicher das du das brauchst?
    Aus deinem Beispiel geht das auf jeden Fall nicht hervor.

    my @ausgaben = ($output_standard,$output_seiten);
    foreach(@ausgaben) {
    open('FILEOUT.$_', ">$_") || die "Kann $_ nicht schreiben!";
    print 'FILEOUT.$_' "test\n"; # HIER GIBTS STRESS
    close('FILEOUT.$_');
    }

    Weiso brauchst du mehrere Dateihandle? Du schliest die Datei doch wieder und kannst sorglos den alten verwenden. Dann scheinst du den Unterschied zu einfachen und doppelten Anführungszeichen nicht verstanden zu haben. Da oben steht:
    open('FILEOUT.$_', ">$_")

    Das ist dann die Bezeichnung deines Handles: 'FILEOUT.$_'
    Sieht ein wenig merkwürdig aus.

    Du willst einfach:

    my @ausgaben = ($output_standard,$output_seiten);
    foreach(@ausgaben) {
    open F, $_ || die "Kann $_ nicht öffnen, weil:$!";
    print F "test\n";
    close F;
    }

    fertig.

    Struppi.