m|^inline sub (\w+)(.*?^})|sm inline sub example { my ($num, $den) = @_; if (! $den) { return; } return $num / $den; } #### my $date = calc_date(); inline sub calc_date { my $date = strftime('%Y-%m-%d', localtime); return $date; } #### my $date; SOMEUNIQUELABEL: { my $date = strftime('%Y-%m-%d', localtime); $date = $date; last SOMEUNIQUELABEL; } #### void_sub($foo, $bar); my @result = list_context_sub($foo, $bar); $val = scalar_context_sub($foo, $bar); #### my ($foo, $bar) = blah($asdf); # becomes my ($foo, $bar); #### my $blah = foo(1, 2); sub foo { my ($var1, $var2) = @_; return $var1 + $var2; } # becomes my $blah; SOMEUNIQUELABEL: { my ($var1, $var2) = @_; return $var1 + $var2; } #### void - no reference to @_ explicitly or implicitly my ($var1, $var2) = @_; # consumed all at once, no more references to @_ explicitly or implicitly #### my $blah = foo(1, 2); sub foo { my ($var1, $var2) = @_; return $var1 + $var2; } # becomes my $blah; SOMEUNIQUELABEL: { my ($var1, $var2) = (1, 2); return $var1 + $var2; } #### return; # void return $foo; # single item return ($blah, $asdf); # multiple items #### my $blah = foo(1, 2); sub foo { my ($var1, $var2) = @_; if ($var2 == 0) { return; } return $var1 + $var2; } # becomes my $blah; SOMEUNIQUELABEL: { my ($var1, $var2) = (1, 2); if ($var2 == 0) { $blah = undef; last SOMEUNIQUELABEL; } $blah = $var1 + $var2; last SOMEUNIQUELABEL; }