我有一个 perl 文件和一个 php 文件。我需要将 perl 文件中的一个大哈希传递给 php。
perl 文件生成的数据需要存储在一个文件中。这个 php 必须读取这个文件并修改它。这个修改后的文件需要被 perl 读回并做一些其他的操作。
要共享的数据是一个 perl 散列,它非常大并且也有很多内部数组。
我试图将哈希存储到 json 并在 php 中读取它,但我失败了。
还有其他方法吗?
对于让多个源访问相同的数据存储,数据库是最典型的选择,认为文本文件可以同样工作。
所以要回答你的问题 - 是的,还有其他创建公共数据存储的方法 - 数据库和数据库库、CSV、Excel 等。对于每个选择,你都需要熟悉 perl 和 PHP api 才能访问它 - 你可以发现它比在纯文本中使用 JSON 更容易。
$data = json_decode(file_get_contents('my_data.json'), true);
# PROCESS DATA
file_put_contents('my_data.json',
preg_replace('/\\\\u([a-f0-9]{4})/e',
'iconv("UCS-4LE",
"UTF-8",
pack("V",
hexdec("U$1")))',
json_encode($data)));
preg_replace 处理 PHP 通常为 unicode 字符输出的丑陋的“\uXXXX”序列。如果你有 PHP 5.4+ 这应该可以代替:
file_put_contents('my_data.json', json_encode($data, JSON_UNESCAPED_UNICODE));
如其他答案之一所述,如果您需要进行大量阅读和写作,请考虑使用数据库。