I upgraded to perl 5.8 and I still get an error. Here is the error I get for the code mentioned in my previous message:
"Free to wrong pool 1af0140 not 15d26e8 during global destruction." "Rob Hanson" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Maybe you could post the error to the list? > > The problem may be the version of Perl you are using. Stable threads were > introduced in version 5.8. In 5.6 they are experimental (maybe part of the > problem?) and use a different syntax. > > You seem to be using "use thread" which is the 5.8 syntax, but 5.6 uses use > "Thread". > > I suggest upgrading if you can. > > Rob > > -----Original Message----- > From: Sharmarke Aden [mailto:[EMAIL PROTECTED] > Sent: Friday, March 14, 2003 2:56 PM > To: '[EMAIL PROTECTED]' > Subject: Help with Threads. > > > I'm new to Perl and trying to access several directories at the same time > and simply read the content of the directory and do some processing on the > files in those directories. The code below is a reference code to get > started on the real work. The code below however crashes and I'm lost as to > what the cause is. Any help you could give me I'd appreciate it. This code > simple in that it looks for 3 letter directories and creates a stats file > used to report the files in that directory. Eventually what I'll want to do > is run those files through processing and take advantage of a bitching 8 > processor machine we just got. BTW I'm using Perl 5.6 on win 2000 machine > (ActivePerl-5.6.0.623-MSWin32-x86-multi-thread to be exact). > > > > #code starts > > > > use threads; > > > > $currDir = `cd`; > chop($currDir); > opendir(IP_MAIN_DIR, $currDir); > > > > #remove '.' and '..' > > @allBatchFolders = grep !/^\.\.?$/, readdir IP_MAIN_DIR; > #get the names of all the 3 character directories in to a list/array ("aaa" > and "aab, and "aac" qualify) > > @allBatchFolders = grep /^[a-z][a-z][a-z]$/, @allBatchFolders; > > > > #open stat file for writing > open(STATFILE, ">$currDir\\stat.txt"); > $index = 0; > > foreach $aDir (@allBatchFolders) > { > $aThread[$index] = threads->new(\&writeStat, $aDir); > @ReturnData = $aThread[$index]->join(); > $index++; > } > > closedir(IP_MAIN_DIR); > close(STATFILE); > > > > sub writeStat > { > $localDir = $currDir . "\\" . $_[0]; > local *DIRECTORY; > opendir(DIRECTORY, $localDir); > print "Start wile loop: @_[0]\n"; > print STATFILE "Start wile loop: @_[0]\n"; > rewinddir( DIRECTORY ); > while ($file = readdir(DIRECTORY)) > { > writeToFile(@_[0], $file); > } > print STATFILE "End wile loop: @_[0]\n"; > print "End wile loop: @_[0]\n"; > closedir(DIRECTORY); > } > > > > sub writeToFile > > { > > use attrs qw(locked); > print STATFILE "Thread @_[0]: @_[1]\n"; > } > > > > #code ends > > > > > > > > ---------------------------------------------------------------- > > Sharmarke Aden > > Continental DataGraphics [www.cdgpd.com <http://www.cdgpd.com> ] > > Direct: (425) 691-2583 > > Fax: (425) 450-1935 > > Email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > ---------------------------------------------------------------- > > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]