Martin: Problem mit Perl

Hallo,
ich habe ein kleines Problem mit Perl.
Ich habe mir die "Einführung in Perl" gekauft und komme damit auch ganz gut zurecht.
Wenn ich aber die 4. Übung des sechsten Kapitels schreibe so wie sie auch im Anhang aufgelöst wird,
dann wird die erste Eingabe nicht wieder ausgegeben. Kann mir jemand sagen warum das so ist?
Also hier das Skript:

#!/usr/bin/perl
print "Bitte geben Sie die Spaltenbreite ein:\n";
chomp ($spaltenbreite=<STDIN>);
print "Geben Sie einige Zeichenketten ein:\n";
chomp (@strings=<STDIN>);
foreach (@strings)
{
printf "%${spaltenbreite}s\n", $_;
}

Und wenn ich nun z.B. als Spaltenbreite 12 angebe und als Zeichenketten "Wort1" und dann "Wort2", dann wird nur "Wort2" ausgegeben.
MfG
Martin

  1. Hallo,

    mach eine leerzeile zwichen der erste und zweite Zeile

    #!/usr/bin/perl

    print "Bitte geben Sie die Spaltenbreite ein:\n";
    chomp ($spaltenbreite=<STDIN>);

    Sohail

    1. Danke für den Tipp, jetzt funktioniert‚s.
      Aber wieso ist das denn so? Ich muss doch eigentlich nicht immer eine Leerzeile zwischen der ersten und der zweiten Zeile lassen, oder?
      MfG
      Martin

      1. Danke für den Tipp, jetzt funktioniert‚s.
        Aber wieso ist das denn so? Ich muss doch eigentlich nicht immer eine Leerzeile zwischen der ersten und der zweiten Zeile lassen, oder?
        MfG
        Martin

        Hallo,
        ich programmiere auch mit Perl. (Einsteigerseminar Perl von Torsten Roßner http://www.probit.net/index.phtml?design=chaos)
        Das mit der Leerzeile scheint mir etwas seltsam. Ich glaube es ist einfach die Cursorsteuerung nach der Eingabe des Array. Wenn das Script wie unten modifiziert wird geht es auch ohne Leerzeile, bei mir jedenfalls.

        #!/usr/bin/perl
        print "Bitte geben Sie die Spaltenbreite ein:\n";
        chomp ($spaltenbreite=<STDIN>);
        print "Geben Sie einige Zeichenketten ein:\n";
        chomp (@strings=<STDIN>);
        #Einfügen einer neuen Zeile nach der Arrayeingabe
        print "\n";
        foreach (@strings)
        {
        printf "%${spaltenbreite}s\n", $_;
        }

        Gruß aus Vorpommern
        Ingo

  2. Hallo Martin,

    die erste Zeile(Leerzeile) ist so zu sagen geschützt. Interpretiert wird von der zweiten zeile. Diese Sache ist im Buch gut beschrieben worden.

    1. Hallo,
      aber in den anderen Besipielprogrammen lässt er auch keine Leerzeilen???

  3. HAllo,

    villeicht hat die erste Zeile ein \n am Ende.

    #!/usr/bin/perl\n

    Sohail