perl:在命令行上传递 json 的优点和缺点是什么?

perl: What are PRO's and CON's with passing json on command line?

我想标准化使用 json 作为我所做的各种编程工作的数据交换格式? [ 到目前为止,除了 MySQL 之外的所有内容 :-( ]

我目前的问题是: 使用 json 格式通过命令行将参数传递给 perl 脚本的优点和缺点是什么?

这是我想出的一些。如果从长远来看这不可行,请告诉我

PRO:

反对意见:

命令行如下所示:

perl perlScript.pl {\"key\ 1\": \"value\ 1\", \"key\ 2\" : \"value\ 2\", \"key\ 3\" : 0  }

脚本如下所示:

#!/usr/bin/perl

# Pass arguments to script on command line via json

use JSON;

# Use loop to combine all command line arguments into one variable
my $json = '';
foreach my $arg(@ARGV) {
  $json .= $arg;
}

# convert variable to hash
my $hash = decode_json($json);

use Data::Dumper;
print Dumper(\%$hash);

Getopt::Long 模块满足您的所有 requirements/pros,并具有以下额外优势

优点 Getopt::Long

  • 这是公认的最佳实践,并使用其他 CLI 工具用户所期望的语法
  • 为以后的开发自记录
  • 在拼写错误或参数类型错误的情况下提供默认的有用错误消息
  • 很多很多...

json 上唯一的 PRO 是,如果期望这将作为基于网络的 API 或工具提供,这似乎不是这里的情况。

这并不是说 JSON 在 CLI 工具中没有一席之地,它被广泛用作配置文件的基于文件的资源、复杂的数据存储、remote/external 软件之间的调用 ( RPC),以及提供网络前端。