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; }