【问题标题】:Using commands inside scripts for Perl?在 Perl 的脚本中使用命令?
【发布时间】:2017-01-13 06:51:18
【问题描述】:

我尝试在脚本中运行 perl 命令,结果如下:

文件编号1.txt:

94088076164765675

命令窗口看起来不错:

C:\Users\Guest\Documents\Prime Numbers>perl -Mntheory=:all -nE "chomp; say next_prime($_);"文件编号1.txt

94088076164765687

我正在尝试在一个名为 primenumbers.pl 的脚本中执行此操作,并生成另一个名为 log.txt 作为输出文件和 filenumber1.txt 作为输入文件的文件:

    #!/usr/bin/env perl
    use warnings;
    use strict;
    use feature 'say';
    use ntheory ":all";

# open filehandle log.txt
open (my $LOG, '>>', 'log.txt');
# select new filehandle
select $LOG;

    perl -Mntheory=:all -nE "chomp; say next_prime($_);" filenumber1.txt

primenumbers.pl 与 filenumbers.txt 位于同一目录中,当我运行脚本时出现问题,我不知道是什么:

C:\Users\Guest\Documents\Prime Numbers>perl primenumbers.pl

在 primenumbers.pl 第 7 行,“say next_prime($_);”filenumber1.txt 附近的操作员预期的位置找到了裸字

    (Missing operator before filenumber1.txt?)

primenumbers.pl 第 7 行的语法错误,靠近 ""say next_prime($_);" filenumber1.txt"

primenumbers.pl 的执行由于编译错误而中止。

我尝试自己修复它,但我只会让事情变得更糟,而且还有更多问题需要修复。有谁知道如何从这里帮助我生成输出文件“log.txt”而不查看输入文件“filenumber1.txt”?提前致谢。

【问题讨论】:

  • 这是一个 Windows shell 命令,不是 Perl 命令!
  • “不查看输入文件”是什么意思?显然,如果不读取某个文件的内容,您就无法转换文件的内容。

标签: perl input scripting output primes


【解决方案1】:

-n 切换到perl 只是将代码包装在while (<>) { ... } 中,因此,要在您自己的程序中获得类似的效果,只需自己添加循环(未经测试的代码;可能包含错误):

#!/usr/bin/env perl
use warnings;
use strict;
use feature 'say';
use ntheory ":all";

# open filehandle log.txt
open (my $LOG, '>>', 'log.txt');
# select new filehandle
select $LOG;

while (<>) {
  chomp; say next_prime($_);
}

运行这个

primenumbers.pl filenumber1.txt

你应该准备好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2017-10-24
    • 2015-01-18
    • 2014-11-21
    • 2018-08-17
    • 2016-11-22
    相关资源
    最近更新 更多