【发布时间】:2018-03-29 08:47:01
【问题描述】:
如果启动了某个线程,谁能告诉我为什么 JSON 不起作用?
use strict;
use warnings;
use JSON;
use threads;
use threads::shared;
sub th { }
threads->create(\&th)->join() if $ARGV[0];
my $json = to_json({ val => "123"}); # WTF?!?
print "$json\n";
工作正常并打印 JSON 字符串。但是将1 作为参数传递给脚本以创建线程,to_json 将失败并显示
hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this)
如果我使用 encode_json insead,效果相同。 在 JSON 的联机帮助页上,没有出现 thread 这个词,我看不出为什么线程应该损害外部字符串转换。
???
【问题讨论】:
-
我的第一个想法是它与解析器相关。要么,要么线程调用与 JSON 模块的全局状态混淆。
标签: json multithreading perl