Scratchy: Perl print

Hallo,

wie kann ich einen print über mehrere Zeilen machen?

print "Schau  
mer  
mal";  
Ausgabe ist:  
Schau  
mer  
mal  

> Nicht OK  
  
print "Schau\  
mer\  
mal";  
Ausgabe ist:  
Schau  
mer  
mal  

> Nicht OK  
  
print "Schau";  
print "mer";  
print "mal";  
Ausgabe ist:  
Schau mer mal  

> OK, aber ich möchte ungern mehrere prints machen

ciao,
Scratchy

  1. Hi Scratchy,

    indem du mit \n ein Zeilenumbruch einfügst.

    print "Hello\nWorld"  
    
    

    MfG
    Otto

    1. indem du mit \n ein Zeilenumbruch einfügst.

      print "Hello\nWorld"

      
      >   
        
      Das war nicht meine Frage. Ich möchte eben keinen Zeilenumbruch in der Ausgabe, sondern nur im Quelltext meinen print über mehrere zeilen.
      
      1. Das war nicht meine Frage. Ich möchte eben keinen Zeilenumbruch in der Ausgabe, sondern nur im Quelltext meinen print über mehrere zeilen.

        Da gibt es mehrere Möglichkeiten, such dir eine aus: http://perldoc.perl.org/perlop.html

        Struppi.

        1. »» Das war nicht meine Frage. Ich möchte eben keinen Zeilenumbruch in der Ausgabe, sondern nur im Quelltext meinen print über mehrere zeilen.

          Da gibt es mehrere Möglichkeiten, such dir eine aus: http://perldoc.perl.org/perlop.html

          Struppi.

          Ich finde nicht, wie ich mit einem einfach "print" das machen.

          1. » »» Das war nicht meine Frage. Ich möchte eben keinen Zeilenumbruch in der Ausgabe, sondern nur im Quelltext meinen print über mehrere zeilen.
            »
            » Da gibt es mehrere Möglichkeiten, such dir eine aus: http://perldoc.perl.org/perlop.html
            »
            » Struppi.

            Ich finde nicht, wie ich mit einem einfach "print" das machen.

            print <<EOF;  
            hier kannst du mehrere Zeilen eingeben  
            EOF  
            
            

            oder

            print q{  
            hier kannst du mehrere Zeilen eingeben  
            };
            

            Struppi.

            1. print <<EOF;

              hier kannst du mehrere Zeilen eingeben
              EOF

              
              > oder  
              > ~~~perl
              
              print q{  
              
              > hier kannst du mehrere Zeilen eingeben  
              > };
              
              

              Das ist aber nicht das was ich will. Ich möchte mehrer Zeilen im Quelltext angeben, aber nicht in der Ausgabe:

              print q{ Schau  
              mer  
              mal};  
                
              Gibt aus:  
              Schau  
              mer  
              mal  
                
              Ich will aber:  
              Schau mer mal 
              
              1. Schreib dir deine eigene Printausgabe.
                print() ist print() und kein konfigurierbarer Filter.

                Habe ich dir schon gesagt.

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. Schreib dir deine eigene Printausgabe.
                  print() ist print() und kein konfigurierbarer Filter.

                  Habe ich dir schon gesagt.

                  Wenn print das schon mitbringt, dann muss ich ja keine eigene Funktion schreiben. Ich will das Rad nicht neu erfinden. Bislang kam aber noch nicht diese Aussage.
                  Und ich halte das für so elementar bzw. alltäglich, dass ich mich echt wundern würde, wenn print sowas wie

                  print "Schau\  
                  mer\  
                  mal";
                  

                  nicht kann. Ich dachte das wäre nur eine Syntaxfrage und artet nicht in einen workaround mit eigener Funktion aus ...

                  1. Wenn print das schon mitbringt, dann muss ich ja keine eigene Funktion schreiben. Ich will das Rad nicht neu erfinden. Bislang kam aber noch nicht diese Aussage.
                    Und ich halte das für so elementar bzw. alltäglich, dass ich mich echt wundern würde, wenn print sowas wie

                    print "Schau\

                    mer\ mal";

                    
                    > nicht kann. Ich dachte das wäre nur eine Syntaxfrage und artet nicht in einen workaround mit eigener Funktion aus ...  
                      
                    "\  
                    "  
                      
                    ist nicht das Gleiche wie "\\n"  
                    Im zweiten Fall sieht perl einen backslash, den es zu schützen hat.  
                    Im ersten Fall ist die Newline im Code. und Perl manipuliert wegen Dir nicht den Perlcode.  
                      
                    Eine Sub ist wirklich schnell gemacht.  
                      
                    my $t = "a\r\nb";  
                      
                    prxn($t);  
                      
                    sub prxn{  
                      print map{ $\_=~ s/\r|\n//g; $\_ } @\_;  
                    }  
                      
                    Fielehandle Bewusstsein, kannst du selber hinzudichten.  
                      
                    mfg Beat
                    
                    -- 
                    
                    ><o(((°>           ><o(((°>  
                    
                       <°)))o><                     ><o(((°>o  
                    Der Valigator leibt diese Fische
                    
              2. Das ist aber nicht das was ich will. Ich möchte mehrer Zeilen im Quelltext angeben, aber nicht in der Ausgabe:

                Dann solltest du dein Problem exakt beschreiben. In einer Webumgebung z.b., werden auch nicht mehrere Zeilen ausgegeben. Aber wenn du in einer Zechenkette Zeilenumbrüche hast und diese in einer Konsole ausgeben willst, werden diese natürlich angezeigt, d.h. du musst in dem Fall die Newlinezeichen ausfiltern. Da führt kein Weg dran vorbei.

                Struppi.

      2. Das war nicht meine Frage. Ich möchte eben keinen Zeilenumbruch in der Ausgabe, sondern nur im Quelltext meinen print über mehrere zeilen.

        Dann höre auf, Newlines an den print Befehl zu übergeben.
        Schreibe deine eigene Printroutine, die \n und \r vorher wegfiltert.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
  2. seltsame frage...

    hab hier kein perl zum testen (zum Glück), aber wenn du print ne Liste übergibst, trennt er nur mit dem Inhalt von $,

      
    $,=" ";  
    print "schau",  
    "mer",  
    "mal";  
    
    

    oder willst du dir die " sparen dann nimm qw//, dass sollte imho auch über mehrere Zeilen funzen.

    cheers
     LanX

    1. oder willst du dir die " sparen dann nimm qw//, dass sollte imho auch über mehrere Zeilen funzen.

      qw( Leider nicht bei Worten,
      die als solche noch erkenntlich sein sollten );

      mfg Beat

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
      1. qw( Leider nicht bei Worten,
        die als solche noch erkenntlich sein sollten );

        Ich denke du meinst Wörter, aber ich kann dir nicht folgen. Hab gerade kein Perl zum testen...

        oder gehts darum dass das Komma ein Warning erzeugt?
        quote like operators

        ciao
          rolf

        1. oder gehts darum dass das Komma ein Warning erzeugt?
          quote like operators

          Nein, qw() trennt eine Zeichenkette an den Leerstellen und gibt eine Liste zurück. Mit print qw() wird also nur ein Leerzeichenloses Wort erzeugt. Ich hatte allerdings zwei Tage vorher auf einen sinnvolleren Operator hingewiesen.

          Struppi.

          1. $,=" ";           # Wer lesen kann ist klar im Vorteil!
            print "schau",
            "mer",
            "mal";

            
            
            1. » ~~~perl

              » $,=" ";           # Wer lesen kann ist klar im Vorteil!
              » print "schau",
              » "mer",
              » "mal";
              »

                
              Danke. gelesen hatte ich es, war mir aber nicht ganz sicher wie sich das auswirkt, obwohl du es ja sogar gesagt hattest.  
                
              Man sollte die vordefinierten Variablen aber mit local verwenden, da es sonst im Skript zu unerwarteten Dingen führen kann. also:  
                
              ~~~perl
              {  
              local $,=" ";  
              print qw("Schau  
              mer  
              mal";  
              Ausgabe ist:  
              Schau  
              mer  
              mal);  
              }  
              
              

              Struppi.