Your code as posted doesn't even compile. When I fix the code as follows, it works for me. So it must be your old version of threads, or your version of Perl, or maybe you are not showing us the real code you use.
use threads; use strict; my $thr = threads->create ( sub { while (1) { eval { while (1) { worker(); } }; if ($@) { print "Error: <$@>.\n"; print "Error Occured: <$@>.\n"; $@=(); sleep (1); } } } ); sub worker { open FILE_OUT, "> /root/xyz" or die "Can't open file: $!"; } $thr->join; __END__ Name "main::FILE_OUT" used only once: possible typo at tmp.pl line 27. Error: <Can't open file: No such file or directory at tmp.pl line 27. >. Error Occured: <Can't open file: No such file or directory at tmp.pl l +ine 27. >. Error: <Can't open file: No such file or directory at tmp.pl line 27. >. Error Occured: <Can't open file: No such file or directory at tmp.pl l +ine 27. >. Error: <Can't open file: No such file or directory at tmp.pl line 27. >. Error Occured: <Can't open file: No such file or directory at tmp.pl l +ine 27. >. Terminating on signal SIGINT(2)
C:\Projekte>perl -V Summary of my perl5 (revision 5 version 10 subversion 0) configuration +: Platform: osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=und +ef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags =' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPL +ICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_M SVCRT_READFIX', optimize='-s -O2', cppflags='-DWIN32' ccversion='', gccversion='3.4.5', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long lo +ng', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='g++', ldflags ='-s -L"C:\strawberry\perl\lib\CORE" -L"C:\straw +berry\c\lib"' libpth=C:\strawberry\c\lib libs= -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool - +lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 - luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 perllibs= -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspo +ol -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi 32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 libc=-lmsvcrt, so=dll, useshrplib=true, libperl=libperl510.a gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-mdll -s -L"C:\strawberry\perl\lib\CORE +" -L"C:\strawberry\c\lib"' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS USE_LARGE_FILES USE_PERLIO Built under MSWin32 Compiled at Aug 11 2008 04:41:33 @INC: C:/strawberry/perl/lib C:/strawberry/perl/site/lib . C:\Projekte>perl -Mthreads -e "die $threads::VERSION" 1.73 at -e line 1.
In reply to Re^3: Eval thread and restart it.
by Corion
in thread Eval thread and restart it.
by mr_p
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |