It's not a problem with normal line-oriented use because the \n character is present on the end of every line with the possible exception of the last which then won't be empty. .... Try something like
Its not a problem at all as B::Deparse shows.
The idea was for you to try it
$ perl -lE " open ARGV, q[<], \qq[0$/0$/0]; while ( my $line = <> ) {
+say q[!!],!!($line) } say $. "
!!1
!!1
!!
3
or
$ perl -e " print qq[0\n0\n0] " > 3zeros
$ od -tacx1 3zeros
0000000 0 cr nl 0 cr nl 0
0 \r \n 0 \r \n 0
30 0d 0a 30 0d 0a 30
0000007
$ perl -le " while ( my $line = <> ) { 1 } print $. " 3zeros
3
$ perl -E " while ( my $line = <> ) { say q[!!],!!($line) } say $. "
+3zeros
!!1
!!1
!!
3