in reply to perl not going to error path

Non-numeric strings evaluate as zero when used in arithmetic.

$ perl -lwe 'use strict; print int "NANNY"; print int "non-numeric";'
Argument "NANNY" isn't numeric in int at -e line 1.
nan
Argument "non-numeric" isn't numeric in int at -e line 1.
0
That is to say: perl did not error out in seek() because the seek to zero offset was successful.

What is the reason for passing non-numeric offset? You will have to check the passed value yourself, or, better yet, fix the program logic to not pass a string where a number is expected!

Replies are listed 'Best First'.
Re^2: perl not going to error path
by gupr1980 (Acolyte) on Jan 23, 2016 at 18:17 UTC

    Oh my, i thought putting the quote around the file handle works but it does not. even when i send a numeric offset putting a quote around file handle goes to die. I guess i should not put quote around file handle. So i should check to make sure that the value is numeric before passing it to seek.

    hopefully there is a way to check and die if it is non numeric with a non zero exit code. I will look around. thanks

      "So i should check to make sure that the value is numeric before passing it to seek"

      You can, yes. Doing it this way will allow you to handle the error yourself:

      my $offset = 'blah'; if ($offset =~ /^[0-9]+$/){ seek $fh, $offset, 0; } else { die "offset needs to be numeric"; }