我是Perl的新手,我想编写一个简单的程序来读取输入文件并计算这个文件的字母,这是我的代码:
#!/usr/bin/perl
$textfile = "example.txt";
open(FILE, "< $textfile");
@array = split(//,<FILE>);
$counter = 0;
foreach(@array){
$counter = $counter + 1;
}
print "Letters: $counter";
此代码显示了我的输入文件的数量,但仅适用于我的输入文件的第一段,它不适用于多个段落,任何人都可以帮助我,我不知道问题=( 谢谢
答案 0 :(得分:2)
答案 1 :(得分:1)
你的代码是一种相当复杂的方式:
#!/usr/bin/perl
# Always use these
use strict;
use warnings;
# Define variables with my
my $textfile = "example.txt";
# Lexical filehandle, three-argument open
# Check return from open, give sensible error
open(my $file, '<', $textfile) or die "Can't open $textfile: $!"
# No need for an array.
my $counter = length <$file>;
print "Letters: $counter";
但是,正如其他人所指出的那样,你计算字节而不是字符。如果您的文件是ASCII或8位编码,那么你应该没问题。否则你应该看看perluniintro。
答案 2 :(得分:-1)
这是使用模块进行工作的另一种方法..
# the following two lines enforce 'clean' code
use strict;
use warnings;
# load some help (read_file)
use File::Slurp;
# load the file into the variable $text
my $text = read_file('example.txt');
#get rid of multiple whitespace and linefeed chars # ****
# and replace them with a single space # ****
$text =~ s/\s+/ /; # ****
# length gives you the length of the 'string' / scalar variable
print length($text);
您可能想要注明标有“ **** ”的行 并使用代码...