gpt4 book ai didi

linux - 读取文件内容的perl程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:46 24 4
gpt4 key购买 nike

我想编写一个 perl 程序来打开一个文件并读取其内容并打印其中的行数、单词数和字符数。我还想打印特定单词在文件中出现的次数。这是我所做的:

#! /usr/bin/perl
open( FILE, "test1.txt" ) or die "could not open file $1";
my ( $line, $word, $chars ) = ( 0, 0, 0 );
while (<FILE>) {
$line++;
$words += scalar( split( /\s+/, $_ ) );
$chars += length($_);
print $_;
}
$chars -= $words;
print(
"Total number of lines in the file:= $line \nTotal number of words in the file:= $words \nTotal number of chars in the file:= $chars\n"
);

您可以清楚地看到,我没有任何规定让用户输入要计算其出现次数的单词。因为我不知道该怎么做。请帮助计算出现部分的数量。谢谢

最佳答案

我猜你这样做是为了学习目的,所以这是你的问题的一个可读性很好的版本(可能还有一千个其他版本,因为它是 perl)。如果没有,则有 wc在 linxux 命令行上。

请注意,我使用的是三参数开放式,这样做通常会更好。为了计算单个单词,您很可能需要一个散列。我用了<<HERE文档,因为它们更适合格式化。如果您有任何疑问,请查看 perldoc并提出您的问题。

#!/usr/bin/env perl

use warnings; # Always use this
use strict; # ditto

my ($chars,$word_count ,%words);
{
open my $file, '<', 'test.txt'
or die "couldn't open `test.txt':\n$!";
while (<$file>){
foreach (split){
$word_count++;
$words{$_}++;
$chars += length;
}
}
} # $file is now closed

print <<THAT;
Total number of lines: $.
Total number of words: $word_count
Total number of chars: $chars
THAT

# Now to your questioning part:
my $prompt= <<PROMPT.'>>';
Please enter the words you want the occurrences for. (CTRL+D ends the program)
PROMPT
print $prompt;

while(<STDIN>){
chomp; # get rid of the newline
print "$_ ".(exists $words{$_}?"occurs $words{$_} times":"doesn't occur")
." in the file\n",$prompt;
}

关于linux - 读取文件内容的perl程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26203282/

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