lepsi varianta $^S (virtualizace)

Jan Kasprzak kas na fi.muni.cz
Úterý Říjen 25 12:01:11 MEST 2005


Honza Pazdziora wrote:
: Jde Ti o chybovy vystup, nebo o ty vyjimky (nebo o oboji)? Pokud
: o vyjimky, tak $SIG{__DIE__}:

	Jde mi o to, aby se Tie::STDERR nepletlo pod ruky kodu,
ktery si sam osetruje vyjimky pres eval, a zase na druhou stranu
fungovalo, i kdyz to samotne spustim pres eval:

----------- index.pl -----------
#!/usr/bin/perl -w
[...]
use Tie::STDERR 'kas', "Chyby ve skriptu $0";

eval {
	die "krtek";
}
if ($@) {
	print "Zachytil jsem vyjimku $@\n";
}

die "jezek";
--------------------------------

A ja chci, aby tento kod bezel korektne pod mod_perlem, tj. aby
mi dosel mail s textem "jezek", ale ne "krtek", i kdyz vyse uvedeny
kod je mod_perlem zabaleny do eval { }. Soucasna situace je myslim takova,
ze Tie::STDERR dela neco jako

	$SIG{__DIE__} = { print STDERR @_ unless $^S; };

coz pod mod_perlem nezachyti ten vnejsi die s jezkem. Kdyz to unless zrusim,
uvidim zase navic i die s krtkem, coz nechci. Cili otazka je jak poznat,
ze stale jeste bezim na stejne urovni vnorenych evalu, jako kdyz jsem
volal Tie::STDERR::import().

	Je jasnejsi co chci aby to delalo?

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
> Specs are a basis for _talking_about_ things. But they are _not_ a basis <
> for implementing software.                              --Linus Torvalds <


Další informace o konferenci Perl