For efficiency, the rcols routine reads by chunks of 100 lines at a time so fatal warnings might not give you a precise line. If you use the CHUNKSIZE option and set it to 1, the fatal exception should be from the problem line. I don't know how much slower the IO will get....
--Chris On Tue, Apr 3, 2012 at 8:29 PM, Derek Lamb <[email protected]> wrote: > Hi Edward, > > If you want to make a class of warnings fatal, > http://perldoc.perl.org/perllexwarn.html tells you what the warning classes > are ('numeric', in your case), and shows how to do it: > > use warnings FATAL => 'numeric'; > > OR make all warnings fatal: > > use warnings FATAL => 'all'; > > Derek > > On Apr 3, 2012, at 2:01 PM, Chris Marshall wrote: > >> Edward- >> >> I don't see a quick way to do this directly from >> rcols() but you could use the EXCLUDE option >> to have rcols skip the lines with entries matching >> a "bad" pattern. If you need to do more, then I >> suggest adding a data validation check to the >> input file before slurping in with rcols. >> >> --Chris >> >> On Tue, Apr 3, 2012 at 12:14 PM, Hyer, Dr. Edward >> <[email protected]> wrote: >>> Chris, >>> >>> The problem was not with PDL, exactly: basically, a routine created a >>> temporary ASCII file, which either because of errors in the inputs or >>> errors in the processing code, contained bad data-- specifically, values >>> that exceeded the format codes used to write them, resulting in '***' in >>> the file. When PDL 'readcols' got to that file, it spat out a warning >>> telling me that the temporary file had bad values. >>> But because the warning was non-fatal, the routine moved on, the temporary >>> file was erased, and the error log gave no indication of how to find where >>> the problem had occurred-- that is, where the bad data had come from. >>> What I need is a way to couch the call to PDL so that the error in >>> 'readcol' is fatal, stops everything, and gives me a backtrace. >>> >>> You were talking about the Perl debugger, which I am sure is capable of >>> this, but I have never used. >>> >>> I hate asking for "suggestions for dumb people" but that's what I need. >>> >>> Thanks, >>> >>> --Edward H. >>> >>> >>> -----Original Message----- >>> From: Chris Marshall [mailto:[email protected]] >>> Sent: Tuesday, April 03, 2012 4:49 AM >>> To: Hyer, Dr. Edward >>> Cc: [email protected] >>> Subject: Re: [Perldl] Catching, or at least tracing, PDL errors >>> >>> Were you able to track down the problem? >>> >>> --Chris >>> >>> On Fri, Mar 30, 2012 at 2:12 PM, Chris Marshall <[email protected]> >>> wrote: >>>> You'll have to provide more information about >>>> your PDL install (version number,...) since my >>>> line 459 in Misc.pm does not have a multiplication >>>> on it. You could try running under the perl >>>> debugger and put a breakpoint on the line in >>>> question when the argument "********" is found. >>>> >>>> --Chris >>>> >>>> To track this down, >>>> >>>> On Fri, Mar 30, 2012 at 1:04 PM, Hyer, Dr. Edward >>>> <[email protected]> wrote: >>>>> Here is my error: >>>>> >>>>> Argument "********" isn't numeric in multiplication (*) at >>>>> >>>>> /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/PDL/IO/Misc.pm >>>>> line 459, <$fh> line 6 (#1) >>>>> (W numeric) The indicated string was fed as an argument to an operator >>>>> that expected a numeric value instead. If you're fortunate the message >>>>> will identify which operator was so unfortunate. >>>>> >>>>> I know how it happened, but I'm having a terrible time finding the >>>>> problem and fixing it because I have no information on the backtrace, and >>>>> this error is non-fatal. I tried using 'use diagnostics' but to no avail. >>>>> >>>>> This happened on one of thousands of calls to this library, and without a >>>>> backtrace, I have no way to figure out which one. >>>>> >>>>> Thanks in advance, >>>>> >>>>> --Edward H. >>>>> >>>>> >>>>> Dr. Edward J. Hyer >>>>> Physical Scientist >>>>> Naval Research Laboratory >>>>> Marine Meteorology Division >>>>> 7 Grace Hopper Avenue, Stop 2 >>>>> Monterey, California 93940 >>>>> 831-656-4023 >>>>> FAX 831-656-4769 >>>>> [email protected] >>>>> >>>>> >>>>> _______________________________________________ >>>>> Perldl mailing list >>>>> [email protected] >>>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl >> >> _______________________________________________ >> Perldl mailing list >> [email protected] >> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl >> > > > _______________________________________________ > Perldl mailing list > [email protected] > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
