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;
}