my prntOffset = 0; sub prink #(string to print) { my $prntText = shift; print $prntText; if($prntText =~ s/.*[\n\r](.*)$/$1/s){$prntOffset = 0;} while(length $prntText) { if($prntText =~ s/^((\w|[\Q\\\/\{\};'"\[\]\.,\?\~\!@#$%^&* ()\E])+)// ) {$prntOffset += length $1;} #normal chars elsif(substr($prntText,0,1) eq "\b") { $prntText = substr($prntText,1); $prntOffset-- if $prntOffset; } elsif($prntText =~ s/^(\a+)//){} #yes nothing elsif($prntText =~ s/^(\t+)//) {$prntOffset += 8 * (length $1) - ($prntOffset % 8);} else { die "\ano pattern match for \"".substr($prntText,0,1)."\" in \"prink\" function\n"; } } $prntOffset %= 80; }