2 つの異なる種類のファイルを解析するためにスレッドを使用しようとしていました。サブルーチンはデータをまったく共有しません。
# Parse header files
$hdr_thrd = threads -> create(\&Parser::parse_header_file, $path);
# Parse input template files
$tmplt_thrd = threads -> create(\&TemplateParser::parse_template);
# Join the threads
$tmplt_thrd -> join();
$hdr_thrd -> join();
# This uses the data obtained from the above two threads
&Parser::parse_xml_template();
問題は、parse_xml_template
関数が配列にアクセスしようとしたときに発生します@TemplateParser::array
。この時点では配列にはデータがありませんが、parse_template
関数内で埋められています。何か不足していますか?