问题标签 [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.
perl - 如果我有 Perl 4,我如何 chomp 字符串?
我正在连接到远程服务器的个人计算机上编写脚本。我认为远程服务器安装了 Perl 4.0 或更低版本,这就是它无法识别的原因。chomp
该命令有替代方法吗?
perl - 为什么 Perl 的 tr/// 不做我想要的?
我正在将 Perl 用于将输入作为两个短 DNA 字符串的脚本。作为输出,我连接两个字符串字符串,然后在连接字符串的末尾打印第二个字符串在其副本上排成一行。例如:如果输入字符串是 AAAA 和 TTTTT,则打印:
我知道还有其他方法可以做到这一点,但我很想知道为什么我对 tr/// 的使用不起作用。
该程序的代码是:
arrays - 是否有 Perl 快捷方式来计算字符串中的匹配数?
假设我有:
我应该如何使用上下文来获取模式找到匹配项的次数 (3)?这可以使用单线完成吗?
我试过这个:
我认为通过在 周围加上括号$number
,我会强制数组上下文,并通过使用scalar
,我会得到计数。但是,我得到的只是1
.
c++ - sclite (SCTK) `make check` faliure, C++/perl/Cygwin, 安全使用 Perl4 的东西吗?
我目前正在尝试安装 NIST sclite
,它是 SCTK 2.4.0(github或更新版本)的一部分。我正在尝试Cygwin
在bash
. 安装是使用make
.
我已经通过了安装make configure
的make 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.pl
Perl 脚本中的“”也有类似的问题。我不知道 Perl 5 包的名称是什么。...有几个地方发生这种情况。
我终于发现两者getopts.pl
都flush.pl
可以从Perl4::CoreLibs
. 我使用的 URLwget
在此站点上被引用。显然,在其他*NIX
发行版中,可以使用包管理器,例如
或者
但我找不到通过apt-cyg
. 如我在做什么部分中所述,我能够从 tarball 安装它们。
再一次,我将陈述我的主要问题:这是安全/良好的编程习惯吗?有更好的解决方案吗?
如果有更好的解决方案(使用 Perl 5),似乎这个链接可能会引导它。
其他一些可能相关的链接:link_{n}和link{n+1} about flush.pl
,link_{n+2} & link_{n+3} about getopts.pl
and Perl4::CoreLibs
。
我在做什么
我没有使用一次性命令行、环境变量添加的东西将此目录的lib
子目录添加到环境变量中,而是执行了以下操作。PERLLIB
在目录中创建一个新目录/usr/lib
,将文件移动到那里
最后,我通过将以下行添加到我的“此命令将路径添加到环境变量”中,使此目录成为perl
每次使用终端时搜索路径的一部分。不同风格的 Linux 有不同的语法来添加环境变量,一定要找出你的语法!~/.bashrc
PERLLIB
我为此运行的命令是
(感谢@melpomene 指出当前版本是 0.004,而不是 0.003。)
之后,我回到安装的基本文件夹并运行make clean
、make config
、make all
和make check
.
这确实让我走得更远,make check
但不是很远。
我想知道使用旧的 Perl (Perl4::CoreLibs) 是否安全和/或良好的编程习惯。将源代码更改为使用 Perl5 的东西会更好吗?
PS 毕竟,您可能想返回并删除您解压缩所有内容的文件夹。就我而言:
结果/后续步骤
一堆测试通过然后