#!/usr/bin/perl -w use strict; use warnings; while (defined(my $line = ) ) { chomp $line; # line 7 if ($line =~ s/\\$//) # line 8 { $line .= ; redo unless eof(DATA); } print "LINE: '$line'\n"; } __DATA__ 1 1 2 2 3 3 4 4 \ 4 4 \ 4 4 5 5 #### skx@gold:~$ ./bug.pl LINE: '1 1' LINE: '2 2' LINE: '3 3' LINE: '4 4 4 4 4 4' LINE: '5 5' LINE: '' skx@gold:~$ perl -v|grep perl, This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi #### steve@skx:~$ ./bug.pl LINE: '1 1' LINE: '2 2' LINE: '3 3' Use of uninitialized value in scalar chomp at ./bug.pl line 7, line 5. Use of uninitialized value in substitution (s///) at ./bug.pl line 8, line 5. Use of uninitialized value in concatenation (.) or string at ./bug.pl line 13, line 5. LINE: '' LINE: ' 4 4' LINE: '5 5' LINE: '' steve@skx:~$ perl -v | grep perl, This is perl, v5.8.8 built for i486-linux-gnu-thread-multi