予有这种数据的JSON格式经由命令行参数发送散列的散列从一个Perl CGI程序到另一个Perl脚本
{
"stream 8": {
"stream_name": "xyz",
"field1": "xe-0/0/1",
"field2": "at-0/0/0"
},
"stream 12": {
"stream_name": "abc",
"field1": "br-0/1/1",
"field2": "at-1/0/1"
}
}
我发送此JSON对象到一个Perl CGI脚本,其中我将它转换为哈希散列。
现在我想使用命令行参数将此散列引用发送给另一个Perl脚本。我不知道为什么它不起作用。
这里是我的CGI脚本
#!c:/perl/bin/perl.exe
use CGI;
use strict;
use warnings;
use JSON;
use JSON::PP;
use Data::Dumper;
use Storable;
# read the CGI params
my $q = CGI->new;
my $json = $q->param("r");
print "Content-type:text/html\n\n";
my $href = decode_json($json);
my %arr = %{$href};
my %hash;
foreach my $key (keys %arr) {
my %a = %{$arr{$key}};
foreach my $value (keys %a) {
$hash{$key}{'streamname'} = $a{'stream_name'};
$hash{$key}{'f1'} = $a{'field1'};
$hash{$key}{'f2'} = $a{'field2'};
}
}
my @h = %hash;
#print ref(@h);
print Dumper(@h);
my $out;
$out = `perl te.pl @h hashval`;
Te.pl
use strict;
use warnings;
use Data::Dumper;
use Storable;
print("\nIn sample\n");
if ($ARGV[-1] eq 'hashval') {
#print("\nIts hash\n");
delete($ARGV[-1]);
my %h1 = @ARGV;
print Dumper(%h1);
}
当我打印%h1
我没有得到期望的输出。
请让我知道如何正确解决这个问题,因为我是Perl和CGI的新手。
@mkHun:之前我问过你不要对其他人的帖子进行微小的修改。如果你有一个重大的改变,那么修正一个小写字母就可以了,但是它太过于微不足道了。 – Borodin
我不知道你在做什么,但它*值得一看** redis **作为数据结构服务器... http://stackoverflow.com/a/18227177/2836621只是一个想法。 –
@MarkSetchell我只需要将这个散列传递给另一个perl脚本,作为命令行参数进一步处理 –