gpt4 book ai didi

Perl - 命令行输入和标准输入

转载 作者:行者123 更新时间:2023-12-01 07:21:04 25 4
gpt4 key购买 nike

我在下面为我的作业创建了这个脚本。它要求一个文本文件,检查单词的频率,并列出出现次数最多的 10 个单词。一切正常,但我需要这个脚本能够通过命令行和标准输入启动。
所以我需要能够编写'perl wfreq.pl example.txt',这应该启动脚本而不是询问文本文件的问题。我不确定如何真正做到这一点。我想如果你在终端命令行上给它文本文件,我可能需要在开始的某个地方跳过 STDIN 的 while 循环。
我该怎么做?
剧本

#! /usr/bin/perl

use utf8;
use warnings;

print "Please enter the name of the file: \n" ;
$file = <STDIN>;
chop $file;


open(my $DATA, "<:utf8", $file) or die "Oops!!: $!";
binmode STDOUT, ":utf8";

while(<$DATA>) {
tr/A-Za-z//cs;
s/[;:()".,!?]/ /gio;
foreach $word (split(' ', lc $_)) {
$freq{$word}++;
}
}

foreach $word (sort { $freq{$b} <=> $freq{$a} } keys %freq) {
@fr = (@fr, $freq{$word});
@ord = (@ord, $word);
}

for ($v =0; $v < 10; $v++) {
print " $fr[$v] | $ord[$v]\n";
}

最佳答案

而不是阅读 <STDIN> ,您可以从 <> 阅读从命令行提供的文件中获取数据,如果没有文件,则从 stdin 获取数据。
例如,使用程序:

#!/usr/bin/env perl

while (<>) {
print $_;
}
命令 ./script foo.txt将从 foo.txt 读取和打印行, 而 ./script本身将从标准输入读取和打印行。

关于Perl - 命令行输入和标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7873513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com