问题标签 [perl5.10]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

perl - 高效 pre-perl-5.10 等效于 pack("Q>")

更新:Salva 正确地指出我对“Q”包模板的介绍是错误的。它是 ">" 修饰符不会回到 5.8。

Perl 5.10 引入了 pack() 修饰符“>”,对于我使用“Q”的用例,它在big endian中打包了一个无符号四边形(64 位)值。

现在,我正在寻找一个有效的等价物

其中@ints 包含两个 64 位无符号整数。“Q>2”表示“以大端字节顺序打包两个无符号四边形”。显然,我想要这个,因为我(至少暂时)绑定到 5.10 之前的 Perl。

更新2:实际上,经过进一步思考,应该做如下简单的事情:

似乎可以在我的 64 位 x86-64 Linux 上工作。为什么这可能不完全相同pack("Q>2", @ints)?任何特定于平台的问题?

反过来是什么(即相当于 unpack("Q>2", @ints))?

0 投票
6 回答
7593 浏览

perl - 在使用“strict refs”时,不能将字符串(“1”)用作子例程 ref

在对各种事件作出反应的 Perl 守护程序中,我试图通过创建匿名子例程在 2 种情况下使用Null 对象模式,它应该只返回一个值 1 aka “true”(请滚动到右侧查看检查子例程LOGINALIVE事件):

不幸的是,我收到了LOGIN事件的运行时错误:

有人知道如何在这里解决吗?

如何为匿名 Perl 子例程提供“函数指针”?

处理程序 => \&sub { 1 }也不这样做。

在 CentOS 5.x 和 6.x 上使用 perl 5.8.8 和 perl 5.10.1

更新:

我也试过以下:

但这无济于事。我认为这排除了某些答案中建议的“缺失的祝福”。

更新 2:

我在原始问题中扩展了源代码片段。背景是:我正在重构我的源代码,因此我已经创建了上面列出的%EVENTS哈希,因此对于每个传入事件(从Flash 客户端通过 TCP-socket 发送的字符串)那里是对验证事件的子例程 ( check ) 的引用和对执行某些操作的另一个子例程 ( handler ) 的引用。我不确定其他子程序是否有效 - 我已经被第一个LOGIN 事件困住了。

我也不明白为什么不检查 => sub { 1 }上面的工作 - sub不应该返回对匿名子例程的引用(当名称被省略时 - 根据perldoc perlref第 4 节)?

更新 3:

打印 Dumper(\%EVENTS)的输出-

0 投票
2 回答
2681 浏览

perl - perl 5.8 和 5.10 的区别

我正在编译一些与 5.8 和 5.10 之间的差异相关的信息。有人可以指出主要区别,或者告诉我可以从哪里开始我的研究吗?

0 投票
3 回答
692 浏览

hash - 在使用“each”迭代哈希时添加新成员

在 perl 5.10.1 中,是否可以在使用each运算符迭代哈希时将新成员添加到哈希中?

嗯。就像在这段代码中(为谷歌图表准备数据)一样,我有一个数组的哈希值,我试图移动每个数组的最后一个元素:

}

0 投票
2 回答
231 浏览

warnings - 使用图表模块时摆脱未定义值的警告

我正在使用 Chart 模块从 CSV 数据生成 PNG 格式的图表:

在此处输入图像描述

效果很好,图表看起来不错,但我收到了undef值警告(上图末尾有 3 个这样的值):

我需要摆脱这些警告,因为它们在这里毫无用处,而且它们使我的 Hudson 工作日志不可读。

所以我试过(在 CentOS 6.4 / 64 位上使用 perl 5.10.1):

但是警告仍然被打印出来。

请问有什么建议吗?

0 投票
1 回答
207 浏览

perl - Perl:在 Moose 类中添加编写器拒绝属性访问

我刚开始学习 Moose,并且创建了一个非常基础的课程。这是我的代码:

人.pm

人.pl

此代码死亡的地方是第 8 行。它会打印出第一个 name 属性,但它会抱怨 lnameCan't locate object method "lname" via package "Person" at ./person.pl line 8. 现在,如果我取出writerin lname,一切都很好,但这有什么意义呢?我意识到我可以使用我创建的 getter,但我很好奇为什么作家会拒绝我访问属性本身?我想我不明白什么...

0 投票
1 回答
476 浏览

perl - 摆脱“v-string in use/require non-portable”警告的推荐方法是什么?

一个模块至少需要 Perl 5.10.0。

当我将此模块与 Perl 版本 5.10.0 一起使用时,我收到警告:

在 Perl 5.10.1 中,这个警告被删除了。

避免警告的推荐方法是什么:


0 投票
1 回答
99 浏览

regex - 用 \b 匹配俄语单词的边框

这是一个错误还是我在 CentOS 6.5 与股票 perl 5.10.1 上做错了什么(当试图匹配多人游戏聊天日志中的俄语脏话时)?

为什么第一个命令不打印任何内容?

0 投票
2 回答
431 浏览

perl - Perl 信号处理程序在 END 块中重置

从 Perl 5.10.1 开始,这按预期工作:信号整数被捕获。

但是这里 SIGINT 并没有被困住。

这可以通过在END块中再次设置处理程序来解决,如下所示:

但是,如果您有多个块,那将不起作用:必须为每个块重新设置处理程序。

我试图弄清楚这一点,但在perldoc找不到解释。我能找到的唯一提到这种行为的是Practical Perl Programming AD Marshall 1999-2005的脚注

注意 发送到您的脚本的信号可以绕过 END 块。

有人会解释这个吗?

0 投票
1 回答
56 浏览

excel - 如何使用perl代码为A的每一列生成excel格式的输出文件,即App和Data的输出文件

这是excel格式的输入文件:

一个 C D
应用程序 1 210101 8.1
应用程序 2 210102 8.2
应用程序 3 210103 8.3
数据 4 210104 8.4
数据 5 210105 8.5
数据 6 210106 8.6

如何使用 Perl 以下列方式生成 excel 的输出文件?

输出文件 1(仅包含来自应用程序行的数据):

一个 C
1 210101 8.1
2 210102 8.2
3 210103 8.3

输出文件 2(仅包含数据行中的数据):

一个 C
4 210104 8.4
5 210105 8.5
6 210106 8.6