Siechfred: Listenkontext vs. skalarer Kontext

Beitrag lesen

Aber warum ergibt:
$name = "Patrick";
print reverse $name;
immer noch Patrick

Weil print sowohl im Listenkontext als auch im skalaren Kontext ausgeführt werden kann, sprich: Du kannst der Funktion eine Liste, aber auch einen String zur Ausgabe vorwerfen. Nun wird reverse stets im Listenkontext ausgeführt (steht da auch obendrüber: reverse LIST). Also nimmt die Funktion deinen String, wertet ihn als Liste mit einem Element 'Patrick' aus und dreht die Listenreihenfolge um - keine Änderung, ist ja nur 1 Element :)

$eman = reverse $name;
print $eman;

Hier weist du den Rückgabewert von reverse explizit einem Skalar zu und "erzwingst" so den skalaren Kontext. Das geht bei Print halt nicht, da diese Funktion sowohl Listen als auch Skalare verarbeitet. Lösung: Verwende zusätzlich irgendeine Funktion, die nur im skalaren Kontext ausgeführt wird. Die simpelste wäre scalar, aber auch sowas wie uc, lc oder ucfirst wären denkbar:

my $str = 'Patrick';  
print scalar reverse $str; # kcirtaP  
print uc reverse $str; # KCIRTAP

Siechfred

--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
0 62

Datem-extention

Edi
  • perl
  1. 0
    Struppi
    1. 0
      Edi
      1. 0
        Struppi
        1. 0
          Edi
      2. 0
        Patrick Andrieu
      3. 0
        edi
        1. 0
          Struppi
          1. 0
            Edi
            1. 0
              Struppi
              1. 0
                Edi
                1. 0
                  Struppi
                2. 0
                  Patrick Andrieu
                  1. 0
                    Edi
                    1. 0
                      Struppi
                    2. 0
                      Patrick Andrieu
                      1. 0

                        Fehlerteufel

                        Patrick Andrieu
                      2. 0
                        Siechfred
                        1. 0
                          Patrick Andrieu
                          1. 0
                            Siechfred
                            1. 0
                              Patrick Andrieu
                              1. 0
                                Siechfred
                                1. 0
                                  Edi
                                  1. 0
                                    Patrick Andrieu
                                    1. 0
                                      Edi
                                      1. 0
                                        Patrick Andrieu
                                        1. 0
                                          Edi
                                          1. 0
                                            Struppi
                                            1. 0
                                              Edi
                                              1. 0
                                                Struppi
                                                1. 0
                                                  Edi
                                                  1. 0
                                                    Struppi
                                                    1. 0
                                                      Edi
                                                      1. 0
                                                        Struppi
                                                        1. 0
                                                          Patrick Andrieu
                                                          1. 0
                                                            Struppi
                                                            1. 0
                                                              Patrick Andrieu
                                                              1. 0
                                                                Struppi
                                                                1. 0
                                                                  Patrick Andrieu
                                                                  1. 0
                                                                    Struppi
                                                                    1. 0
                                                                      Patrick Andrieu
                                                                      1. 0
                                                                        Edi
                                                                        1. 0
                                                                          Struppi
                                                                          1. 0
                                                                            Struppi
                                                                            1. 0
                                                                              Edi
                                                                              1. 0
                                                                                Siechfred
                                                                                1. 0
                                                                                  Edi
                                                                                  1. 0
                                                                                    Struppi
                                                                                  2. 0
                                                                                    Siechfred
                                                                                    1. 0
                                                                                      Edi
                                                                                      1. 0
                                                                                        Siechfred
                                                                2. 0
                                                                  Edi
                                          2. 0
                                            Siechfred
                                            1. 0
                                              Edi
                                          3. 0
                                            Patrick Andrieu
                              2. 0
                                Patrick Andrieu
                                1. 0

                                  Listenkontext vs. skalarer Kontext

                                  Siechfred
                                  1. 0
                                    Patrick Andrieu
                                    1. 0
                                      at
                                      1. 0
                                        Struppi
                                        1. 0
                                          at
        2. 0
          Patrick Andrieu