2010-09-24 9 views
6
$hi = do_this('asdf'); 

    sub do_this 
    { 
     $blob{'f'} = { 
      'k' => 'j' 
     }; 
    } 

    print $hi->{'k'}; 
    # prints j 

da do_this nichts zurückgibt, wie druckt es j noch?Warum gibt diese Perl-Funktion einen Wert zurück?

+0

Hoffentlich sind Sie woanders in Ihrem Code und wir sehen es nicht im Snippet, aber Sie sollten 'use strict; Verwenden Sie Warnungen; ' – Daenyth

Antwort

25

http://perldoc.perl.org/functions/return.html

In Ermangelung einer ausdrücklichen Rückkehr ein Unterprogramm, eval oder tun, Datei automatisch wieder den Wert des letzten Ausdruck ausgewertet

+0

auch' tun BLOCK' und jede andere Blockstruktur, wenn es in nicht void Kontext ist –

4

Alle Perl 5 Subroutinen Rückkehr der letzte Wert der letzten ausgeführten Anweisung.

+0

... vorausgesetzt, sie treffen nicht eine 'return' Anweisung – friedo

+0

@friedo: Wenn sie eine' return' Anweisung treffen , was ist die letzte Anweisung ausgeführt? : P –

+2

Nun, die weniger komische Art, das zu sagen, ist das Ergebnis des letzten ausgewerteten Ausdrucks. Dies ist möglicherweise nicht der "letzte Wert", da Unterprogramme mehrere Elemente zurückgeben können. –

Verwandte Themen