I'm trying to make threaded Net::Telnet program.
I want all "input_log" to be written to one file.
So I tried to give an IOScalar FileHandle to "input_log", then output real file 
later.
IOScalar works fine, threads works fine.
But together dosen't work.
Here is sample script.
Any suggestions appreciated.

# works fine without threads
use strict;
use FileHandle;

my @result;
for (my $i = 0; $i < 10; $i++) {
    my $fh = new FileHandle \($result[$i]), '>:scalar';
    $fh->print("test$i");
    $fh->close();
}
for (@result) {
    print $_, "\n";
}
-----
# no output with threads
use strict;
use FileHandle;
use threads ('yield',
             'stack_size' => 64*4096,
             'exit' => 'threads_only',
             'stringify');

my @result;
my @thr;
for (my $i = 0; $i < 10; $i++) {
    my $fh = new FileHandle \($result[$i]), '>:scalar';
    $thr[$i] = threads->create(sub{$_[0]->print($_[1]);$_[0]->close()},
                               $fh,
                               "test$i");
}
for (@thr) {my $dummy = $_->join();}
for (@result) {
    print $_, "\n";
}

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to