perl:在命令行上传递 json 的优点和缺点是什么?
perl: What are PRO's and CON's with passing json on command line?
我想标准化使用 json 作为我所做的各种编程工作的数据交换格式? [ 到目前为止,除了 MySQL 之外的所有内容 :-( ]
我目前的问题是:
使用 json 格式通过命令行将参数传递给 perl 脚本的优点和缺点是什么?
这是我想出的一些。如果从长远来看这不可行,请告诉我
PRO:
- 参数可以是任何顺序
- 参数以标准格式传递,可以为其他目的使用和解析。 (传递给 javascript 函数,传递给 PHP,保存在 table 中)
反对意见:
- 不知道长度限制
- 不知道可能出现的问题。
命令行如下所示:
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),以及提供网络前端。
我想标准化使用 json 作为我所做的各种编程工作的数据交换格式? [ 到目前为止,除了 MySQL 之外的所有内容 :-( ]
我目前的问题是: 使用 json 格式通过命令行将参数传递给 perl 脚本的优点和缺点是什么?
这是我想出的一些。如果从长远来看这不可行,请告诉我
PRO:
- 参数可以是任何顺序
- 参数以标准格式传递,可以为其他目的使用和解析。 (传递给 javascript 函数,传递给 PHP,保存在 table 中)
反对意见:
- 不知道长度限制
- 不知道可能出现的问题。
命令行如下所示:
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),以及提供网络前端。