これが動的言語のリファクタリングの限界だ
Padre

sub dummy {
  my $self = shift;
  my $start = 1; my $end = 10; my $ret = 0;
  for(my $i = $start; $i <= $end; $i++) {
    $ret += $self->{step} * $i;
  }
  print $ret;
}

↓ forの部分を「Refactor」の「Extract Subroutine」を実行する

sub dummy {
  my $self = shift;
  my $start = 1; my $end = 10; my $ret = 0;
  my ($i) = foo ($start, $self, $end, $ret);
  print $ret;
}
sub foo {
  my $start = shift;
  my $self = shift;
  my $end = shift;
  my $ret = shift;

  for(my $i = $start; $i <= $end; $i++) {
    $ret += $self->{step} * $i;
  }
  return ($i);
}