Tach!
String ist nur eine der Möglichkeiten.
Das von Dir sehr schön beschriebene Verhalten bezüglich Funktionsargument ist übrigens ganz typisch für OOP/Overload.
Overload ist eine praktische Angelegenheit. Weil es so gut passt, hier ein weiterer typischer Anwendungsfall (Stringkontext). Betrachte untenstehende Datenstruktur in Perl
$var = {
'content_length' => '17479',
'content_type' => 'image/jpeg',
'filename' => 'eichelberg.jpg',
'iohandle' => bless( \*Symbol::GEN3, 'IO::String' ),
'mtime' => '1386763302',
'mtime_gm' => 'Wed Dec 11 12:01:42 2013',
'mtime_local' => 'Wed Dec 11 13:01:42 2013',
'name' => 'upspot'
};
So könnte man mit $var->{iohandle} auf ebendieses zugreifen um den Inhalt der Datei auszulesen. Man könnte aber auch $var zu einer Instanz einer Klasse machen und den Operator ""
überladen. Somit kriegt man den Inhalt ganz einfach mit "$var" as string so daß eine getMethode $var->getContent()
entfallen kann.
MfG