use strict; use Data::Dumper; use XML::LibXML; use threads; my @file = ; chomp for (@file); my $n = shift () || 4; my @t = map { 'threads'->create (sub { for my $file (@file) { print "$file\n"; eval { my $d = 'XML::LibXML'->load_xml (location => "$file.xml"); }; $@ && print "@=$@\n"; } print "done...\n"; return 0; } ) } (1 .. $n); for my $t (@t) { $t->join (); } __DATA__