$ perl #!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; open my $fake, '<', \"row\nrow\n\n\n"; while( <$fake> ){ my( $word ) = /(\w+)/; use warnings qw/ FATAL all /; eval { print "$word\n"; 1 } or dd({ OOPS => $@, line => $_ }); } __END__ row row { line => "\n", OOPS => "Use of uninitialized value \$word in concatenation (.) or string at - line 9, <\$fake> line 3.\n", } { line => "\n", OOPS => "Use of uninitialized value \$word in concatenation (.) or string at - line 9, <\$fake> line 4.\n", }