Hi!
Du übergibst dieser Funktion einen Wert (den String) als "Call by Value"-Argument. Dieser Wert wird als Kopie übergeben, kann daher innerhalb der Funktion beliebig verändert werden. Die Veränderungen an diesem Wert _müssen_ aber außerhalb der Funktion ohne Wirkung bleiben!
Und was hat das nun konkret mit dem Problem zu tun? Die von dir aufgestellte "Forderung" wird ja durch die Kopie erfüllt.
Abhilfe:
Wähle die expliite und ausführliche Schreibweise.
Verzichte auf das Schachteln von Funktionen!
Das ist keine Abhilfe, weil diesbezügliches gar kein Problem vorliegt.
Unabhängig davon ist die explizite Schreibweise aber schon deshalb empfehlenswert, weil nur so auf die unterschiedlichen Rückgabewerte im Fehler- und in Gutfall reagiert werden kann und sollte.
Lo!