【问题标题】:Use a Perl's Data::Dumper format array in PHP在 PHP 中使用 Perl 的 Data::Dumper 格式数组
【发布时间】:2016-06-11 22:49:06
【问题描述】:

我需要访问一个由 Perl 的 Data::Dumper 输出的数组。
数组在一个原始文件中,我需要用 php 访问它。
数组格式如下:

$stats = {
  'days' => 25,
  'lengths' => {
    'Piwee' => 269,
    'Jeanne-' => 904,
    'kaAnar' => 340,
[... Very Big ARRAY....]

我在这里找到了this solution,但我不想使用 eval() 因为这个数组会有用户输入的数据。 由于在 str_replace 解决方案的情况下我总是需要 eval() 输出,我想我需要找到另一种方法来做到这一点。
也许转换为 XML 或通过直接 PHP 解析?
我不确定这里的最佳解决方案是什么。

一个 perl / PHP / bash 解决方案就可以了

注意 1:我无法编辑输出此原始文件的 Perl 代码
注意 2:我不会在 Perl 中编码,所以我不知道如何处理这些数据

【问题讨论】:

    标签: php arrays perl type-conversion perl-data-structures


    【解决方案1】:

    请勿使用Data::Dumper 导出您的数据。它主要用于调试目的,而不是用于数据序列化,尤其不是用于输入外星语言

    使用 Perl JSON 模块的 encode_json 调用从 Perl 哈希创建 JSON 字符串,并使用 PHP 的 json_decode 将其转换为 PHP 关联数组

    例如,假设您来自 Data::Dumper 的输出在文件 stats.data 中,那么像这样的简短 Perl 程序将打印相当于 STDOUT 的 JSON

    use strict;
    use warnings 'all';
    
    use JSON;
    
    print encode_json( do 'stats.data' or die $! ), "\n";
    

    输出

    {"lengths":{"Jeanne-":904,"Piwee":269,"kaAnar":340},"days":25}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2011-06-26
      相关资源
      最近更新 更多