予有這種數據的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腳本,作爲命令行參數進一步處理 –