问题标签 [perl-module]
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.
perl - 使用列标题和行标题映射值
我有一些包含以下数据的文件。
示例文件 1:
我想将第 4 列中的值与第 2 列和第 3 列映射,如下所示。
需要输出。
这是我到目前为止所尝试的:
我得到的输出如下。
perl - 为什么我的 Perl 对象找不到它的 skip() 方法,即使我可以将它作为子例程调用?
我正在研究一个 Perl 模块,每当我调用skip()
我以下列方式编写的方法时:
我得到:
当我这样称呼它时:
Perl 找到了!
奇怪的是,如果我将“ ”命名为skip
其他任何名称(“ skipper
”、“ hello
”),则此语法有效:
我想可能skip()
是一个“秘密”的保留关键字或其他东西,但我也有名为sort()
and的方法next()
(我知道它们是保留的),并且这些工作正常。
我真的很想将此方法命名为“ skip
。” 有谁知道为什么 Perl 找不到它?
perl - 如何找到 Perl 脚本中使用的所有模块并安装它们?
我得到了一些要部署的 Perl 脚本。
查找和安装这些脚本使用的所有模块的最简单方法是什么?
编辑:
据我所知,eval 中没有条件包含或包含。
perl - 使用 Perl,如何使用 CSV 文件中的值创建图表?
我对此并不陌生,需要有关如何执行此任务的线索。我有一个包含以下示例数据的 csv 文件:
我想创建一个 perl 脚本来从 csv 文件中读取数据(根据给定的用户输入)并创建 XY(散点图)图表。假设我想为日期 2009-01-01 创建一个图表并键入 B。用户应该输入类似“2009-01-01 B”的内容,并且应该使用 CSV 文件中的值创建图表。
任何人都可以建议我一些代码开始吗?
perl - 如何在 foreach 循环中刷新数组?
我正在编写一个 Perl 脚本来对哈希进行一些数学运算。此哈希包含以下示例中给出的值。我已经写了下面的代码。如果我在不使用 foreach 循环的情况下单独为数组值执行此代码,则输出很好。但是,如果我在数组值上使用 foreach 循环运行它,A 中的值的总和是好的,但是从 B 输出添加以前的值。
代码:
我认为问题在于这条线。它存储所有以前的值,因此在下一个 foreach 循环中添加所有值。
所以,这里我有两个问题:
1)如何在每次 foreach 循环迭代中刷新数组(@data)?
2) 如何在数组 ref ($ec) 中添加值并将它们存储在数组中?因为当我使用以下代码时:
输出为我提供了相同的 @count 和 $total 值。
请给我一些建议。
perl - 这些 Perl 使用行会发生什么?
我不明白这里发生了什么:
我认为这是一个匿名哈希。模块如何从use
生产线使用它?你能解释一下吗?
编辑:我对 PAR 模块不感兴趣。我只是对幕后的工作方式感兴趣。我怎样才能像这样配置我的模块?
perl - 是否有任何 Perl 模块可以阻止我向任何可能失败的事物添加“或死”?
我正在编写运行各种外部命令以及可能失败的各种文件系统命令的代码。
有没有什么模块可以帮我省or die
去添加任何可能失败的东西的麻烦?
我希望能够将以下内容包装在一些东西中,而不是:
我得到:
这样如果mkdir
失败它会告诉我失败是 in mkdir
,如果system
失败它会告诉我失败是 in system
。
perl - Perl 构造函数应该返回 undef 还是“无效”对象?
问题:
什么被认为是“最佳实践”——以及为什么——在构造函数中处理错误?
“最佳实践”可以是 Schwartz 的引述,或者 50% 的 CPAN 模块都使用它,等等……;但我对任何人的合理意见感到满意,即使它解释了为什么常见的最佳实践并不是真正的最佳方法。
就我自己对该主题的看法(多年以来受 Perl 软件开发的启发),我已经看到了在 perl 模块中处理错误的三种主要方法(我认为从最好到最差列出):
构造一个对象,设置一个无效标志(通常是“
is_valid
”方法)。通常与通过类的错误处理设置错误消息相结合。优点:
允许标准(与其他方法调用相比)错误处理,因为它允许
$obj->errors()
在错误的构造函数之后使用类型调用,就像在任何其他方法调用之后一样。允许传递附加信息(例如 >1 错误、警告等...)
允许轻量级的“redo”/“fixme”功能,换句话说,如果构造的对象非常重,具有许多复杂的属性,100% 总是可以的,并且它无效的唯一原因是因为有人输入了一个日期不正确,您可以简单地执行“
$obj->setDate()
”,而不是再次重新执行整个构造函数的开销。这种模式并不总是需要,但在正确的设计中非常有用。
缺点:据我所知没有。
返回“
undef
”。缺点:无法实现第一个解决方案的任何优点(全局变量之外的每个对象错误消息和重对象的轻量级“fixme”功能)。
在构造函数中死掉。除了一些非常狭窄的边缘情况之外,我个人认为这是一个糟糕的选择,原因太多,无法在这个问题的边缘列出。
更新:为了清楚起见,我认为(否则非常值得和一个伟大的设计)解决方案具有非常简单且根本不会失败的构造函数和一个繁重的初始化方法,其中所有错误检查都只是其中之一的一个子集出于本问题的目的,案例#1(如果初始化程序设置错误标志)或案例#3(如果初始化程序死亡)。显然,选择这样的设计,你会自动拒绝选项 #2。
perl - 如何在不安装新 Perl 的情况下安装或升级最新 Perl 中的 CPAN 模块?
我想安装一个 Perl 模块(在本例中为FindBin),但由于它包含在Perl 5.10.1 发行版中,cpan
我想为我安装 Perl 5.10。有没有办法只通过安装模块cpan
?
我能看到的唯一选择是直接从 source 安装,这似乎有点粗糙,因为没有单独的包(例如Makefile.PL
,等),只有裸.pm
文件。
由于这是一个只有一个文件的小模块,在这种情况下是可行的,但如果我想安装一个更大的包怎么办?
编辑:这与原始问题有所不同,但涉及与 Perl 发行版打包在一起的模块的一般问题:我发现“独立” FindBin (版本 1.49)有语法错误,所以我检索了版本 1.50 Perl 5.10.1 发行版...但是,由于该模块现在作为 Perl 5.10 的一部分列在 CPAN 上,因此我无法找到描述此增量中更改/修复的内容的 CHANGES 文件。我必须进入开发者存储库来提取这些信息是否合理?)
编辑 2. 好的,这是一个更好的例子。在 Perl 5.8.8 上,我有 Carp 的 1.04 版本。但是,我看到 Perl 5.10.1 与 1.11 版本一起打包。有没有办法让 CPAN 为我安装最新版本的 Carp 而无需拖入所有 Perl 5.10.1?除了perl 5.10.1 安装之外,我什至找不到 CPAN 上 Carp 模块的链接。