use XML::Writer; use IO::File; use threads; use strict; my $output = new IO::File(">output.xml"); my $writer = new XML::Writer(OUTPUT => $output, DATA_MODE=>1, DATA_INDENT=>1,CHECK_PRINT=>1); $writer->xmlDecl("UTF-8"); $writer->startTag('operations'); my $thr1 = threads->new(\&writeArticleData1); my $thr2 = threads->new(\&writeArticleData2); while (!(($thr1->join) && ($thr2->join))) { # Wait for threads to finish } $writer->endTag("operations"); $writer->end(); $output->close(); sub writeArticleData1() { lock($writer); $writer->startTag('product'); $writer->characters("Hello, world!"); $writer->endTag("product"); sleep 2; return 1; } sub writeArticleData2() { lock($writer); $writer->startTag('product'); $writer->characters("Hello, world2!"); $writer->endTag("product"); return 1; } 1; #### Hello, world2! Hello, world!