首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将hashref传递给子

将hashref传递给子
EN

Stack Overflow用户
提问于 2013-12-12 19:21:40
回答 1查看 109关注 0票数 3

我的代码如下所示,非常简单,但我只是不让它按预期工作。

代码语言:javascript
复制
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(-dubug);
use warnings;
use diagnostics;
use strict;
use JSON;
use Data::Dumper;

my $q = CGI->new;

my $data = $q->param('POSTDATA');
my $data_hash;

if (defined($data)) {
$data_hash = decode_json($data);
}

sub test {
    my $return_hash = shift;

    return \$return_hash;
}

my $return_to_print = test($data_hash);

print $q->header();
print "This is a test: \n";
print Dumper($return_to_print);

基本上,我将json发送到perl脚本,将json解码为hashref,然后id将该数据传递给测试子,后者只会返回它,这样cgi就可以打印它,同时保持它的结构。到目前为止,我是不成功的,我希望有人能为如何正确地写这样的东西提供一些启示。

所以说到底,翻车机应该打印以下内容:

代码语言:javascript
复制
$VAR1 = { 'key' => 'value', 'key2' => 'value' };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 19:57:40

你的代码归结为

代码语言:javascript
复制
my $data_hash       = decode_json($data);
my $return_hash     = $data_hash;
my $return_to_print = \$return_hash;

$return_hash$return_to_print不同,这一点也不足为奇。您将一个对标量的引用分配给$return_to_print,而不是复制它的值(引用到哈希)。您需要下列条件才能使它们保持不变

代码语言:javascript
复制
my $return_to_print = $return_hash;

也就是说,你需要以下几点:

代码语言:javascript
复制
return $return_hash;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20552324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档