perlquestion
why_bird
<p>Good Morning Monks,</p>
<p> This is a question about error tracking.. Say I'm reading in various variables from various files, and passing them to various different subs in various different modules I wrote. Then say that some of my input data (in the input files) is messed up in some way. So I pass it to one of my subs, and the sub throws an error (lets have an example because I'm confusing myself here :P)</p>
<code>
(main.pl)
use strict;
use warnings;
use mySubs;
my @array;
while (my $temp=<INPUT>){
my $number=&mySub(\$temp);
@array=(@array,$number);
}
---------------------------
(mySubs.pm)
use strict;
use warnings;
package mySubs;
#...Exporter.. etc..
sub mySub
{
my $variable = ${$_[0]};
....
#some stuff
....
if (some condition){
print "data $variable not valid in mySub\n";
return -1;
}
....
#rest of sub
....
}
</code>
<p>So what I want to be able to do is instead of just printing <i>'data $variable not valid in mySub'</i> I'd like to be able to print <i>'data $variable not valid in mySub from line xx in 'main.pl'; line yy in <INPUT>'</i></p>
<p> Is this possible? I thought I could pass $. around but that wouldn't (I don't think) tell me it came from 'main.pl' (And it would be a pain to change all of my subs if there's a simpler way!)</p>
<p> I don't even really know where to start on this one, so any monk-ish wisdom would be appreciated!<br>
Cheers, why bird.
<p>
p.s. I wasn't sure what an appropriate title would be so feel free to change it/suggest what it should be changed to
</p>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-670682">
<center> ........<br>
Those are my principles. If you don't like them I have others.<br>
-- Groucho Marx<br>
.......<br></center>
</div></div>