Re: [Boston.pm] Changing line number reported by errors
"Greg London" <email-2Ro/Dj86MvDSUeElwK9/[email protected]> Fri, 25 Oct 2019 20:17:08 -0500
| Newsgroups | gmane.comp.lang.perl.perl-mongers.boston |
|---|---|
| Message-ID | <[email protected]> |
ahh... #line that's it! $. wouldn't work for me becuase the filehandle is long since closed by the time I do the eval(), so it will come back 0 I'll have to prepend #line to the eval string and figure out the line number to put there, but that'll make these scripts I'm dealing with a whole lot easier to use. Thanks everyone! Greg On Fri, October 25, 2019 2:27 pm, Andrew Langmead wrote: > Perl borrows the C preprocessors "#file" and "#line" directives to change > the file name and line number reported. > > > andrew@localhost:~$ perl -e 'use warnings; return' > Can't return outside a subroutine at -e line 1. > andrew@localhost:~$ perl -e '#line 266' -e 'use warnings; return' > Can't return outside a subroutine at -e line 266. > andrew@localhost:~$ > > > If you have the perl script embedded in a larger file for some reason > (like > the way one might embed a Windows script might be embedded in a .CMD file > to be executable) it is often helpful to set the line number, as Perl > starts counting line numbers from the "#!/usr/bin/perl" line. > > Keep in mind that #line directives specifies what perl should report as > the next line's line number. (so "#line 8" will be on line 7, which will > confuse someone who doesn't understand the line directives and thinks it > is an odd comment in the code.) > > > > On Fri, Oct 25, 2019 at 12:27 PM Uri Guttman <uri-X/[email protected]> wrote: > > >> On 10/25/19 12:22 PM, Uri Guttman wrote: >> >>> my understanding (to be corrected by greg) is that an error in evaled >>> perl code reports the line number in that code. he wants the line >>> number of the eval call itself. he can use __LINE__ to get that when >>> he checks the eval for any errors in the slurped in code. >> >> another idea: >> >> use carp to report the error (or one of the carp subs). check the eval >> for an error and carp $@. it should report the current line number of >> the eval. >> >> uri >> >> _______________________________________________ >> Boston-pm mailing list >> [email protected] >> https://mail.pm.org/mailman/listinfo/boston-pm >> >> > > _______________________________________________ > Boston-pm mailing list > [email protected] > https://mail.pm.org/mailman/listinfo/boston-pm > > --