Hans,
I tried the version with `exit(1) if(!$^S);` but it didn't mimic the true behavior of die. Specifically, if die is called inside of eval, the $@ value is not set up appropriately.
- Alex
On Dec 1, 2006, at 12:52 AM, Hans-Joerg Bibiko wrote:
On 1 Dec 2006, at 07:49, Alexander Ross wrote:
James,
I tried this out but couldn't get it to work. $@ wasn't set when the END block was called.
? Did you tried out my version with 'exit(1) if(!$^S);'? If yes could you please send me an example script which doesn't work.
What do you mean with: "$@ wasn't set when the END block was called"? I'm dealing with $^S.
The good news is if we are in an eval block, exception_handler::die can call Carp::croak[1]. Which "dies of errors (from perspective of caller)".
Yes, to use Carp is a very good idea. You can call in perlmate.rb
def args ["-I#{e_sh(Pathname.new(ENV['TM_BUNDLE_SUPPORT']) + "PerlMate")}", "-Mexception_handler", "-MCarp=verbose"] end
and write within the 'sub die' (excep... .pm)
print TM_ERROR_FD "<p>".Carp::longmess()."</p";
which will print something like
at /Users/.../untitled.pl line 8 eval {...} called at /Users/.../ untitled.pl line 6
-Hans
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate