Wouldn't this be considered to be semi-alias? Well you create one more variables but still does not have the "contents" as it is still a pointer/reference. So memory is OK here?
sub alter_var {
my $aliasvar = $_[0]; # Nice to have C like proto types but...
${$aliasvar} =~ s/a/b/g;
# ${$_[0]} =~ s/a/b/g; # This uses $_[0] and works
}