首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >“代码”对变量意味着什么?

“代码”对变量意味着什么?
EN

Stack Overflow用户
提问于 2012-03-15 13:01:36
回答 2查看 893关注 0票数 5

perl中,我想调试一些模块代码,因此我临时在这些源代码中添加了以下一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 print $${${$${$$h[1]{$j}}{proxy_cache}}{$e}}{'fetch_handler'}{'ownerDocument'}

...and它打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 CODE(0x9b2b3e0)

“代码”是什么意思?我以为是HASH(0x???????)。我在Perl中非常新,所以请解释这一点,因为goooooogling for +Perl +代码是没有帮助的:)

我在找url of ownerDocument信息,顺便说一句。

更新

我正在尝试使用模块WWW::Scripter来满足我的需求,我已经发现了几个bug,这个模块的作者(克里索斯托莫斯神父)已经根据我的输入修复了这些bug。

现在,我正在“调试”在JavaScript中动态创建的图像(例如((new Image()).src='http://...')中的一些问题,因为这些映像现在不包含在$w->images结果中。

如果您查看模块源sub update_html中的[http://cpansearch.perl.org/src/SPROUT/WWW-Scripter-0.026/lib/WWW/Scripter.pm],有一行以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       $h && $h->eval($self, $code  ...

这是我需要调试的部分。在对脚本进行评估之后,我试图“搜索”DOM中的新图像。我能够很容易地找到图像元素,但是现在我正在试图找到它们属于哪个文档的信息,因为我需要用正确的get信息对它们进行referer。一些图像是在帧、iframes、脚本等中创建的。如果使用了不正确的引用信息,那么可能会导致不正确的响应,因为大多数这样的(new Image()).src='http://...'图像用于使用cookie进行跟踪,而不是用于实际的图像内容。为了获得正确的文档内容,需要对所有这些特殊图像进行正确的处理,如果没有正确的引用,这些图像就不能正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-15 19:50:00

对于评论来说,这有点太长了,但这并不是对你问题的直接回答。

我想弄清楚你的数据结构,我完全意识到你可能无法控制。我很好奇你为什么要处理这件事,如果你有头发或者精神错乱的话。

多个引用有点痛苦,但它也让我想起了我以前使用引用所做的一些愚蠢的事情,甚至在第一次Perl会议上也介绍过。

当我第一次开始使用引用时,我愚蠢地认为,每当我想传递一个引用时,我都必须使用一个引用,即使这个东西已经是一个引用。我最终会得到一些像$$$$ref这样丑陋的东西

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my $string = 'Buster';

some_sub( \$string );

sub some_sub {
    my $ref = shift;
    some_other_sub( \$ref );
    }

sub some_other_sub {
    my $ref = shift;
    yet_another_sub( \$ref );
    }

sub yet_another_sub {
    my $ref = shift;
    print "$$$$ref\n";   #fuuuuugly!
    }

当您开始引用聚合时,情况会变得更糟,我认为这就是您的数据结构中正在发生的情况。由于对引用的引用只是标量,而原始引用也是标量,所以不能通过排列下标来取消引用。因此,行中的所有$${ }

直到我从内部开始,我才能看到正在发生的事情,即使是这样,我也只是尝试和错误,直到我得到了有用的东西。

第一级是数组引用,在索引1处包含哈希引用。这并不难,也不难看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my $j = 'foo';
my $e = 'baz';

my $h = [];

$h->[1] = { foo => 'bar' };   # to get to $$h[1]{$j}

print "1: $h->[1]{$j}\n";

下一个层次有点奇怪。要获得$${ ... }{proxy_cache},需要一个对散列引用的引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$h->[1] = { 
    foo => \ { proxy_cache => 'duck' } # ref to hash reference 
    };   

print "2. $${ $$h[1]{$j} }{proxy_cache}\n";

我不知道您是如何构建这个数据结构的,但是您应该寻找已经有散列引用的地方,而不需要进行其他参考。这就是我年轻时做的蠢事。看起来可能是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sub some_sub {
    my $hash = shift;

    $h->[1] = { 
        foo => \ $hash   # don't do that!
        };

下一部分也没那么糟。它只是一个常规的哈希引用作为值(而不是duck):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$h->[1] = { 
    foo => \ { proxy_cache => { $e => 'quux' } }
    };   

print "3. ${ $${ $$h[1]{$j} }{proxy_cache} }{$e}\n";

下一个级别是对散列引用的另一个引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$h->[1] = { 
    foo => \ { 
        proxy_cache => { 
            $e => \ { fetch_handler => 'zap' } 
            } 
        }
    };   

print "4. $${ ${ $${ $$h[1]{$j} }{proxy_cache} }{$e} }{'fetch_handler'}\n";

最后,我找到最后一个键ownerDocument,并分配一个子例程引用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$h->[1] = { 
    foo => \ { 
        proxy_cache => { 
            $e => \ { fetch_handler => {
                    ownerDocument => sub { print "Buster\n" },
                    }
                } 
            } 
        }
    };   

print "5. $${ ${ $${ $$h[1]{$j} }{proxy_cache} }{$e} }{'fetch_handler'}{'ownerDocument'}\n";

输出是您已经看到的CODE(0x.......)

我想简化它,但是没有什么可删除的,因为那些烦人的非聚合引用。这将只删除三个非空格字符以对齐{$e}键:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print "6. ";

print $${ $${ $h->[1]{$j} }{proxy_cache}{$e} }{'fetch_handler'}{'ownerDocument'};

print "\n";
票数 6
EN

Stack Overflow用户

发布于 2012-03-15 13:09:31

这是一个代码参考,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my $var = sub { ... };
print "$var\n";
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9728106

复制
相关文章
div 水平排列
Flex 布局 最简单的一种方式 ,css3 新增。父级 div 直接使用 display: flex; 即可 html
草帽lufei
2022/07/29
2.2K0
div 水平排列
div 环形排列_三个div如何并排
红色点:为每个黄色DIV的坐标点;即绝对定位时的元素,left值 和 top值 ,设置的点;
全栈程序员站长
2022/09/19
2.8K0
div 环形排列_三个div如何并排
Latex中插入多张图片,实现并排排列或者多行多列排列
但是我原来只插入过一张图片(图片内容来源于网络;是国漫一人之下的宝儿姐。强推这部国漫~),代码如下,效果如图:
全栈程序员站长
2022/08/14
24.6K1
Latex中插入多张图片,实现并排排列或者多行多列排列
web前端学习摘要。
HTML是具有语义化的语言,针对网页的布局,有一类标签代表各种意义的“布局盒子”。所有的布局类标签都主要用来构建页面的内容区域,是双标签类型,是双标签类型,默认显示为块状元素。
7537367
2020/07/27
3.7K0
js动态添加div
因为每个input标签的name如果相同的话, 在后端接收的时候会出错, 所以我的解决办法就是在name后加上一个数字, 后端用一个循环进行接收
烟草的香味
2019/07/25
24.5K0
div 等块级标签横向排列的方法总结
块级标签的默认文档流是上下排列的,再配上横向排列的方法,请过适当的嵌套,可以应对几乎所有常见的布局需求,因此,我决定总结一下 div 横向排列的方法。这也是我初学前端时最困扰的问题~
一墨编程学习
2018/09/14
3.3K0
div 等块级标签横向排列的方法总结
根据数据源字段动态设置报表中的列数量以及列宽度
在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。本文就讲解一下Act
葡萄城控件
2018/01/10
4.9K0
根据数据源字段动态设置报表中的列数量以及列宽度
如何获得对云计算的正确控制
在当今的背景下,客户仍然拥有他们的数据,但可以与云计算提供商分享管理权。“控制”的概念已从基于物理位置的所有权转变为对流程的控制。因此,企业信息安全和风险管理领导者需要采用间接控制的新方法来提高效率和安全性,最重要的是让人高枕无忧。
静一
2018/07/31
1.3K0
如何获得对云计算的正确控制
linux awk获得某一列
因此,如果想要把某一文件的总行数赋值给变量nlines,可以表达为: 1) nlines=(awk 'END{print NR}' filename) 或者 2) nlines=$(awk 'END{print NR}' filename)
用户5760343
2022/05/23
2.9K0
linux awk获得某一列
Masonry 布局tag标签(4343排列)
效果 image.png demo // TagAppDto dto; // List<TagAppDto> dtoList = new ArrayList<>(); // dtos
GuangdongQi
2018/05/24
8100
如何在深度学习竞赛中获得前五名
本文中的所有代码都在GitHub Repository上。数据集已经在适当的文件夹中,并且代码可以运行(在安装PyTorch之后)。
代码医生工作室
2020/04/20
7860
如何在 Tableau 中对列进行高亮颜色操作?
在做数据分析时,如果数据量比较大,可以考虑使用颜色对重点关注的数据进行高亮操作,显眼的颜色可以帮助我们快速了解数据和发现问题。比如一个数据表可能会有十几到几十列之多,为了更好的看清某些重要的列,我们可以对表进行如下操作——
小马哥的牛棚
2020/08/20
5.8K0
JS实现鼠标拖动div移动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript">
小小鱼儿小小林
2020/06/23
34.4K0
css应知应会 第四集
3、当父元素中显示不下所有的已浮动子元素的话,那么最后一个将换行,依次类推。但有可能会被卡住
李才哥
2020/08/17
1.2K0
css应知应会 第四集
赛后跟踪:如何在 ImageNet 比赛中获得冠军?
近两个月,国内团队先后在全球权威的人脸检测评测平台 FDDB 和全球自动驾驶算法公开排行榜 KITTI 以及 Cityscapes 上取得非常好的成绩,这在一定程度上证明了国内计算机视觉相关算法已达到国际顶尖水平。 今年 ILSVRC 2016(全称是ImageNet Large Scale Visual Recognition Challenge)分为五大部分,包括:目标检测、目标定位、视频中目标物体检测、场景分类、场景分析。在昨天,全球最为权威的计算机视觉大赛 ILSVRC2016(大规模图像识别竞赛)
AI科技评论
2018/03/08
1.5K0
赛后跟踪:如何在 ImageNet 比赛中获得冠军?
如何在 Discourse 中批量移动主题到不同的分类中
例如,我们需要将下面的主题批量从当前的分类中移动到另外一个叫做 数据库 的分类中。
HoneyMoose
2021/07/23
1.2K0
如何在 Discourse 中批量移动主题到不同的分类中
如何在 Linux 中以脚本模式运行 Top
在 Centos8 中,我们执行本文中的命令。下面命令按照 CPU 使用率对数据进行排序,并打印命令中指定的前 20 行。
用户9236362
2021/11/30
2.5K0
“以终为始”的正确使用方式
以终为始是一种思维方式。如果终局确定,那么根据已知的终局就能推演出达到终局的路径,最终形成一个解决方案。举个例子,如果你要盖一栋楼,那么在盖之前的规划的大楼效果就是”终“,通过这个效果图来反推我们的建筑施工图、结构施工图等,最终形成一个完整的解决方案。
石云升
2022/08/25
5880
点击加载更多

相似问题

在div中以图标形式并排列表项(css)

884

在移动列表项中显示多个div列

11

需要div排列,如截图所示

10

以特定模式排列列表项

33

Div没有正确排列

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文