http://qs321.pair.com?node_id=421247


in reply to Spreadsheet::WriteExcel write failure

The code works OK if you remove the  or die $! from the line inside the eval - the successful return code appears to be 0 causing the die to be evaluated.

rdfield

Replies are listed 'Best First'.
Re^2: Spreadsheet::WriteExcel write failure
by adolpht (Novice) on Jan 11, 2005 at 12:36 UTC
    Hi John and rdfield,
    write returns 0 if successful so of course my code will fail,... if write is successful.
    Dho!
    $! being set to "No such file or directory" is an intersting red herring
    Thanks for the feedback guys
    Cheers
    Tony

      The $! being set like that is often a result of the searching through @INC for a file to be used or required.

      /J\

        Oh ok... thanks for the info.
      A couple of things to note: most modules do not set the variable $! on failure. For example, DBI sets the variable $DBI::errstr for class method errors, and $dbh->errstr for errors concerning a specific database handle. Also, you really have to look at the docs for each module to determine whether a particular method returning undef or false means that the method failed. Generally this will only be true for methods whose return value is specified to have a certain meaning. Spreadsheet::WriteExcel's write method appears not to be one of them. Finally, you have to be careful because unlike $@, $! is not guaranteed to contain a blank string or other false value when no error has occurred, so its value is essentially unpredictable in those circumstances. See perlvar for details.