my $buf; # leave value as undefined so use before a real value is available will result in a warning message.
...;
while (<$input>) {
...;
$buf .= $newletter; # not an error because appending to an undef value is treated the same as appending to an empty string
}
####
if (defined $buf) { $buf .= $newletter; }
else { $buf = $newletter; }
####
my $buf = '';
...;
while (<$input>) { ...; $buf .= $newletter; }