Until now I use these two substitutions before printing "$string" to the terminal.
$string =~ s/\p{Space}/ /g;
$string =~ s/\p{Cntrl}//g;
Is there something that I should consider, when I replace the first two substitutions with the following two?
$string =~ s/\p{Space}/ /g;
$string =~ s/\P{Print}//g;
See this question. There are two code points that are neither control nor printable characters: U+2028
LINE SEPARATORand U+2029PARAGRAPH SEPARATOR. But both of them are space characters, so your two substitutions should be equivalent.