Packageの名前を動的に変更したい

# --- Foo.pm
package Foo;
sub foo {
    return 'result is foo';
}
1;

# --- RenamePackageName.pm
package RenamePackageName;
sub from_to {
    my ( $class, $from, $to ) = @_;
    $from = "::$from\::";
    $to   = "::$to\::";
    @{ %{$to} }{ keys %{$from} } = values %{$from};
}
1;

# --- main.pl
#!/usr/bin/env perl
use Foo;
use RenamePackageName;

RenamePackageName->from_to('Foo'=>'Bar');

print Bar::foo();
% perl main.pl
result is foo

こういうこと?