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.