Perl Problem

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von villiboy, 18.01.2006.

  1. #1 villiboy, 18.01.2006
    Zuletzt bearbeitet: 18.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    Hi Leute,
    ich möchte in Perl eine Datei neu anlegen und in diese schreiben z.B. ein Adressbuch. Doch leider gibt es schon probleme beim anlegen der Datei.
    Hier der Code:

    #!/usr/bin/perl
    sysopen(IN,"meineDatei.txt",O_CREATE) or die "Fehler beim öffnen der Datei\n$!";
    while(<IN>) {
    print "Jetzt möchte ich in die Datei schreiben\n";
    }
    close(IN)

    Wäre nett, wenn mir da wer helfen könnte!!

    Danke

    Nachtrag: Kann es sein, wenn ich es so mache: open(DATEI,">meineDatei.txt") das es mir dann die Datei anlegt, wenn sie nicht vorhanden ist?
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 avaurus, 18.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    Code:
    open(FOO, ">myfile.txt");
    print FOO "Ich schreibe in die Datei!";
    close(FOO);
    
    bling :).

    ja, wenn die Datei nicht vorhanden ist, wird sie erstellt. Ist die Datei bereits vorhanden, wird sie überschrieben.
    Mit open(FOO, ">>bla.txt"); hängst du Inhalt an die Datei ran.
     
  4. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Perl ist Perl -> deswegen verschoben.
     
  5. #4 villiboy, 18.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    sorry, hab ich ganz verpeilt.....
    aber jetzt mal was zu perl...

    also ich habe folgendes programm:

    #!/usr/bin/perl
    open(DATEI,">>meineDatei.txt") or die "Fehler beim öffnen der Datei\n$!";
    print "Bitte geben Sie den Namen, Straße, Plz und Geburtstag, getrennt durch Kommata ein:\n";
    $Eingabe = <STDIN>
    @AdressListe = split(/,/,$Eingabe);
    for(@AdressListe){
    print DATEI "@AdressListe";
    }
    close(DATEI)


    Dieses Perl-script soll mir eine adressdatei anlegen und nach straße, name oder plz sortieren. wie mache ich das? bzw. mir gibt es einen eintrag immer mehrmals in die datei aus, woran liegt das? ich möchte immer einen eintrag nach dem anderen eingeben, hiillffeeeee!!

    danke
     
  6. #5 supersucker, 18.01.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    meine perl-erfahrungen sind schon ne weile her, aber so klappt das nicht!

    1. du verwendest weder

    a) use strict
    b) use warnings

    wenn du diese beiden pragmas verwendest wirst du 99 % deiner fehler selber finden!

    afaik kannst du nicht direkt ein array in eine datei schreiben, wenn dann:

    Code:
    for $_ (@array) {
    print DATEI $_;
    }
    
    und warum splittest du erst den string in ein array und dann das array wieder in einzelne string-tokens?
    dann kannst du auch gleich einfach den ganzen string in die datei schreiben und halt vorher mit

    s///

    die kommas entfernen....
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Du schreibst für jedes Listenelement die volle Liste in die Datei. Besser ist:

    Code:
    #!/usr/bin/perl
    open(DATEI,">>meineDatei.txt") or die "Fehler beim öffnen der Datei\n$!";
    print "Bitte geben Sie den Namen, Straße, Plz und Geburtstag, getrennt durch Kommata ein:\n";
    $Eingabe = <STDIN>;
    @AdressListe = split(/,/,$Eingabe);
    for(@AdressListe){
    	print DATEI $_;
    }
    close(DATEI)
    
     
  8. #7 villiboy, 18.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    ok, jetzt fügt es mir noch einen eintrag, wie es auch soll hinzu! aber wie kann ich eine abfrage machen, ob noch weitere einträge vorgenommen werden möchten oder keine mehr? und dann das prog beendet?
    und das mit dem sortieren klappt auch nur nach dem ersten element, kann ich nicht sagen, dass ich nach einem bestimmten element wie z.b die plz sortieren will?

    danke
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Du kannst es mit einer do-while-Schleife tun, in etwa wie

    Code:
    ...
    do {
      lese daten
      schreibe daten
      ...
      frage: weitermachen j/n
      lese $answer
    } while (test $answer=="j")
    ...
    
    Bezüglich Deiner sort-Frage würde ich Dir empfehlen, Dir mal Hashs anzuschauen.
     
  10. #9 avaurus, 18.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    villiboy: mmhja, hier fehlen aber alle Basics, die es gibt oder ? :)...macht aber nichts. Es gibt tonnenweise netter Perlbücher und wenn du clever bist, hast du Perl verdammt schnell "drin" :).
     
  11. #10 villiboy, 18.01.2006
    Zuletzt bearbeitet: 18.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    ja ich bin anfänger und hab da so ein aufgabenbaltt bekommen mit dem ich anfangen soll aber wie gesagt, über jede hilfe bin ich froh!!
    werde mir auch bald ein buch zulegen und bis dahin auf euere unterstützung hoffen, danke!!
    ich habe schon festgestellt, dass man da sehr schell reinkommt, aber das sortieren ist immer noch ein prob!!
     
  12. #11 Wolfgang, 18.01.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Nein, du bist nicht auf unsere Hilfe angewiesen, denn es gibt
    perldoc -f FUNKTIONSNAME
    Außerdem gibt es auf http://www.perl.org/ die komplette Hilfe nebst Tuorial und FAQ zu fast jedem Thema.
    Ausführlicher geht es nicht.

    Gruß Wolfgang
     
  13. #12 villiboy, 19.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    danke wolfgang, hab mich jetzt ein paar stunden geqäult und bin auf folgendes, fast funktionierendes programm gekommen. leider komme ich aus der schleife nicht mehr raus und dieses problem bekomme ich nicht hin.
    es wäre nett, wenn ihr mir sagen könnten was ich da noch falsch mache! danke

    #!/usr/bin/perl
    use warnings;
    do{
    open(DATEI,">>meineDatei.txt") or die "Fehler beim öffnen der Datei\n$!";

    print "Bitte geben Sie den Namen, Straße, Plz und Geburtstag, getrennt durch Kommata ein:\n";

    $Eingabe = <STDIN>;
    chomp $Eingabe;

    @AdressListe = split(/,/,$Eingabe);
    for(@AdressListe){
    print DATEI $_;
    }
    print DATEI "\n";
    if($Eingabe eq "fin"){last} # hiermit wollte ich die schleife beenden ...
    }while($Eingabe);
    close(DATEI);
    print "Programm beendet, Tschuess\n";
     
  14. #13 avaurus, 19.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    schau doch mal, was suprsucker für dich geschrieben hat:
    du benutzt aber nur warnings ! use strict ist viel wichtiger, da es auf schwerwiegende Dinge hinweist bzw. abbricht.
    Was du da schreibst ist unter aller Sau :).
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 villiboy, 19.01.2006
    villiboy

    villiboy Mitglied

    Dabei seit:
    07.04.2005
    Beiträge:
    37
    Zustimmungen:
    0
    mhh, ok. wieso ist das unter aller sau?
     
  17. #15 avaurus, 19.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    schreib unter "use warnings;" noch ein "use strict;" :)...dann siehst du automatisch, dass es unter aller Sau ist :). Immer dran denken: man kann nur dazulernen, ich will dich nicht beleidigen oder so, aber "use strict;" hilft ungemein Fehler schon sehr früh zu entdecken.
     
Thema:

Perl Problem

Die Seite wird geladen...

Perl Problem - Ähnliche Themen

  1. Zeichensatzprobleme - Perlskript mit cygwin unter Windows

    Zeichensatzprobleme - Perlskript mit cygwin unter Windows: Hallo, ich arbeite mit cygwin unter Windows XP und führe damit ein Perlskript aus. Das Skript liest Werte (Strings) aus einer Textdatei und...
  2. [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...
  3. Perl: Problem mit "-d" Operator auf FAT

    Perl: Problem mit "-d" Operator auf FAT: Hallo! Ich bin grad etwas sehr verdutzt und verstehs auch ned ganz. Bin grade dabei ein Perl Skript zu schreiben, welches mir von einem...
  4. Problem: PHP + PERL + /bin/bash

    Problem: PHP + PERL + /bin/bash: Hallo, ich bin dabei ein kleinen Adminpanel zu schreiben. Der Pannel ist mit PHP programmiert und hat genügend Rechte um über system(); ein...
  5. Apache2 probleme mit PHP und Perl!!!!

    Apache2 probleme mit PHP und Perl!!!!: Erstmal Hallo Zusammen gruß an alle!!!! Habe folgendes Problem und zwar, sobald ich im Browser (sei es Firefox, oder Opera usw.) die adresse:...