[Perl] Probleme mit " Zeichen

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von sparky, 29.08.2004.

  1. #1 sparky, 29.08.2004
    Zuletzt bearbeitet: 29.08.2004
    sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    Servus, ich hab mal ne Frage zu " bei Perl. Und zwar habe ich folgenden Code:

    Code:
      if(open(fileOUT, ">$fileName")) {
        print fileOUT $fileContent;
      }
    
    (soll einfach einen String in eine datei schreiben)

    das Problem ist jetzt nur, wenn in dem string $fileContent " Zeichen drin sind, sceint das nicht zu funktionieren? (also die Datei ist nacher zwar da, aber leer).

    Meine Frage als Nicht-Perl Kenner, wie kann ich das Problem umgehen, dass auch die " Zeichen in die Datei geschrieben werden ?

    EDIT:
    folgenden Fehler bekomme ich:
    Use of uninitialized value in print at ./wfile.pl line 209.

    habe aber eigentlich richtig zuvor die Variable als Funktionsparameter definiert:
    my ( $fileName, $fileContent ) = @_;
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. fossy

    fossy - dead -

    Dabei seit:
    26.03.2004
    Beiträge:
    274
    Zustimmungen:
    0
    close(<FILEHANDLE>);

    Hast du die datei auch nachher wieder geschlossen?

    Bitte immer ganze "testprogrämmchen" zeigen, dann ist es leichter den fehler zu finden.

    gruss, fossy.
     
  4. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    ok also:

    Code:
     $sendBuf = write_file($$cmd{'arg1'}, $$cmd{'arg2'});
    
    dann die sub write_file:
    Code:
    sub write_file {
      my ( $fileName, $fileContent ) = @_;
      my %data;
      my $ok = "OK";
      my $msg = "data written";
      if(open(fileOUT, ">$fileName")) {
        print fileOUT $fileContent;                           ### das ist zeile 209
       if(!close(fileOUT)) {
          $msg = "NOK";
          $msg = "Cannot close $fileName after writing: $!";
        }
      } else {
        $ok = "NOK";
        $msg = "Cannot open $fileName for writeing: $!";
      }
    
      $data{'status'} = $ok;
      $data{'message'} = $msg;
      return serialize(\%data);
    }
    
    Fehler:
    Code:
    Use of uninitialized value in print at ./wfile.pl line 209.
    
     
  5. fossy

    fossy - dead -

    Dabei seit:
    26.03.2004
    Beiträge:
    274
    Zustimmungen:
    0
    folgender script läuft bei mir hervorragend
    kann so auch keinen fehler sehen.

    Code:
    #!/usr/bin/perl
    
    $msg = "data written";
    
    $fileName = "testfile.txt";
    $fileContent = "testtext";
    
    if(open(fileOUT, ">$fileName")) {
       print fileOUT $fileContent;
       if(!close(fileOUT)) {
        $msg = "NOK";
        $msg = "Cannot close $fileName after writing: $!";
        }
       } else {
      $ok = "NOK";
      $msg = "Cannot open $fileName for writeing: $!";
     }
     print $msg;
    
     
  6. sowatt

    sowatt Foren As

    Dabei seit:
    19.03.2003
    Beiträge:
    94
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hi,
    es steht doch in der Fehlermeldung das die Variable $fileContent nicht
    initialisiert ist. Was steht den in '@_' ?

    Ich vermute mal das der Inhalt aus '@_' in die erste Variable wandert und
    $fileContent leer bleibt.

    $fileContent einfach mal mit einzeln initialisieren: 'my $fileContent = "" ' .

    MfG
    sowatt
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 ExRevel, 30.08.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Hi...

    in dem Array @_ befinden sich die an die Subroutine übergebenen variablen. Am besten du lässt dir mal den Inhalt den du in $filename und $filecontent übergeben möchtest ausgeben:
    Code:
    print $_[0]." und ".$_[1]."\n";
    
    Dann müsstest du ja den Namen und den Inhalt ausgegeben bekommen. Vllt. wäre aber auch noch der Rest des Programms interessant, da es sich ja um Referenzen handelt bei den übergebenen werten.
    Code:
    $sendBuf = write_file($$cmd{'arg1'}, $$cmd{'arg2'});
    
    ciao Exi
     
  9. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    ahh der 2. Parameter ist wirklich leer.
    Dann scheint die unserialize() Fkt. für Perl doch etwas stark buggy zu sein.

    Das Script hat mir nen Kollege gebaut, da ich kein Plan von Perl hab :)
    Ist eigentlich ein simpler Daemon der ein (unter PHP) serialisiertes Array vom Socket liest, unserialisiert und anhand davon gewisse Operationen macht. Aber die unserialize() Lib für Perl scheint etwas buggy zu sein.
    Ich häng mal beide Files dran falls es wen interessiert.

    Code:
    /* php code zum testen: */
    $a = array ('command' => 'cm_writefile', 'arg1' => 'datei.tst, 'arg2' => "Das soll in die Datei!");
    
    $a = serialize($a);
    
    /* und jetzt $a auf den Perl-Socket schreiben */
    
     

    Anhänge:

Thema:

[Perl] Probleme mit " Zeichen

Die Seite wird geladen...

[Perl] Probleme mit " Zeichen - Ähnliche Themen

  1. [Perl] Namespace Probleme

    [Perl] Namespace Probleme: Hallo zusammen, irgendwie scheitere ich gerade daran, meine sehr lange Hauptdatei in viele Module (*.pm) mit einem Steuerprogramm (.pl) zu...
  2. [Perl] Perl OO Methodenaufruf in anderem Objekt

    [Perl] Perl OO Methodenaufruf in anderem Objekt: Hallo, Ich bin dabei in Perl ein Pokerspiel zu programmieren, hänge aber momentan an einem Problem, wo ich nicht weiterkomme. Ich habe die...
  3. [Perl] Check auf Referenz...Hash

    [Perl] Check auf Referenz...Hash: Hallo! Mal ne kleine Frage. Gibt es ein Funktion mit der ich checken kann, ob in einem Hash der Value eine Referenz auf einen weiter Hash...
  4. [Perl]: Mehr als ein Objekt auf einmal instanziieren

    [Perl]: Mehr als ein Objekt auf einmal instanziieren: Hallo zusammen, ich benutze zurzeit Net::FTPSSL zum Aufbau einer FTP Connection. Mein Problem ist, wenn ich z.B. eine Verbindung zu 5...
  5. [Perl] Script zum ändern der Signatur in vB-Boards

    [Perl] Script zum ändern der Signatur in vB-Boards: Hallo, folgendes Script funktioniert beim gulli:board , aber leider nicht hier: #!/usr/bin/perl use LWP::UserAgent; $agent = new...