问题标签 [perl4]

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 投票
3 回答
1713 浏览

perl - 如果我有 Perl 4,我如何 chomp 字符串?

我正在连接到远程服务器的个人计算机上编写脚本。我认为远程服务器安装了 Perl 4.0 或更低版本,这就是它无法识别的原因。chomp该命令有替代方法吗?

0 投票
4 回答
1717 浏览

perl - 为什么 Perl 的 tr/// 不做我想要的?

我正在将 Perl 用于将输入作为两个短 DNA 字符串的脚本。作为输出,我连接两个字符串字符串,然后在连接字符串的末尾打印第二个字符串在其副本上排成一行。例如:如果输入字符串是 AAAA 和 TTTTT,则打印:

我知道还有其他方法可以做到这一点,但我很想知道为什么我对 tr/// 的使用不起作用。

该程序的代码是:

0 投票
9 回答
64241 浏览

arrays - 是否有 Perl 快捷方式来计算字符串中的匹配数?

假设我有:

我应该如何使用上下文来获取模式找到匹配项的次数 (3)?这可以使用单线完成吗?

我试过这个:

我认为通过在 周围加上括号$number,我会强制数组上下文,并通过使用scalar,我会得到计数。但是,我得到的只是1.

0 投票
1 回答
497 浏览

c++ - sclite (SCTK) `make check` faliure, C++/perl/Cygwin, 安全使用 Perl4 的东西吗?

我目前正在尝试安装 NIST sclite,它是 SCTK 2.4.0(github更新版本)的一部分。我正在尝试Cygwinbash. 安装是使用make.

我已经通过了安装make configuremake all部分。这并非不费吹灰之力(请参阅关于第一个file not recognized)和第二个(模板/范围)问题的 SO 帖子)。当我进入make check安装部分时,许多检查/测试都通过了,但随后出现以下错误。

我已经做了一些研究(如下所述),并且我已经能够克服这个问题。但是,这涉及到包括一些过时perl的模块(Perl4)。

我的第一个问题是如何修复此错误或如何跳过该部分测试。我已经能够修复错误,如果人们认为它是安全的,我会将其作为答案。请注意,在解决make check此问题后还有一个问题,但我会在最后提到如何解决这个问题。

我想知道使用旧的 Perl ( Perl4::CoreLibs) 是否安全和/或良好的编程习惯。将源代码更改为使用 Perl5 的东西会更好吗?

有没有更好的方法?

我想确定的一件事是,没有进一步的关键测试make check可能会失败。


系统详情


我的尝试/研究

从上面的输出中,我们def_art.pl通过了检查,因为没有检查 - “ def_art.pl passed without tests”。然而,接下来的检查hubscr.pl,失败了。错误来自def_art.pl.

显而易见的事情似乎是运行def_art.pl,我做到了。

所以在我看来,这是一个不推荐使用的perl文件(或模块,或其他)。

我进一步挖掘并在 2014年的一次讨论中发现了这个讨论kaldi。(kaldi是一个使用 SCTK 评分系统的语音识别工具包)。我认为讨论中有 3 个部分特别相关,我将把它们链接起来(第一第二第三)。我将在这里插入零件:

def_art.pl正在寻找getopts.pl我在我的机器上找不到的东西!

... [T] 这些是 Perl 5 的最新版本不再支持的遗留包。我认为我们不应该接受对它们的依赖。自 Perl 5 开始以来,它们已被弃用。我们应该这样做而不是 'require "getopt.pl"' use Getopt::Std (注意:现代perl代码不应该require为系统包调用 "")。flush.plPerl 脚本中的“”也有类似的问题。我不知道 Perl 5 包的名称是什么。...有几个地方发生这种情况。

我终于发现两者getopts.plflush.pl可以从Perl4::CoreLibs. 我使用的 URLwget在此站点上被引用。显然,在其他*NIX发行版中,可以使用包管理器,例如

或者

但我找不到通过apt-cyg. 如我在做什么部分中所述,我能够从 tarball 安装它们。

再一次,我将陈述我的主要问题:这是安全/良好的编程习惯吗?有更好的解决方案吗?

如果有更好的解决方案(使用 Perl 5),似乎这个链接可能会引导它。


其他一些可能相关的链接:link_{n}link{n+1} about flush.pllink_{n+2} & link_{n+3} about getopts.pland Perl4::CoreLibs


我在做什么

我没有使用一次性命令行、环境变量添加的东西将此目录的lib子目录添加到环境变量中,而是执行了以下操作。PERLLIB

在目录中创建一个新目录/usr/lib,将文件移动到那里

最后,我通过将以下行添加到我的“此命令将路径添加到环境变量”中,使此目录成为perl每次使用终端时搜索路径的一部分。不同风格的 Linux 有不同的语法来添加环境变量,一定要找出你的语法!~/.bashrcPERLLIB

我为此运行的命令是

(感谢@melpomene 指出当前版本是 0.004,而不是 0.003。)

之后,我回到安装的基本文件夹并运行make cleanmake configmake allmake check.

这确实让我走得更远,make check但不是很远。

我想知道使用旧的 Perl (Perl4::CoreLibs) 是否安全和/或良好的编程习惯。将源代码更改为使用 Perl5 的东西会更好吗?

PS 毕竟,您可能想返回并删除您解压缩所有内容的文件夹。就我而言:


结果/后续步骤

一堆测试通过然后

也许会有所帮助。我将针对此问题发布一个单独的问题,或者,如果解决方案很快,我将在此帖子中添加解决方案。