in reply to Unexpected Behavior - Variables and Regex

Firstly, make sure that you're not doing something like:

$foo = chomp($foo); # remove trailing line

That doesn't work. chomp modifies $foo in place, and then returns a fairly useless value, so you don't want to then assign that to $foo.

If that's not the case, then at a guess, $hostname might end in "\r\n" (a Windows-style line ending); perhaps because SSH knows you're connecting from a Windows host. In this case, chomp may be removing the "\n", but not the "\r". Outputting an "\r" results in the cursor returning to the start of the line; subsequent output will then overwrite your old output.

Perhaps instead of chomp($hostname) try $hostname =~ s(\s)()g which will remove all whitespace from the host name.

use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name