[英]How can I count paragraphs in text file using Perl?
我需要創建允許對文本文件中的段落進行計數的Perl代碼。 我嘗試了這個,但是不起作用:
open(READFILE, "<$filename")
or die "could not open file \"$filename\":$!";
$paragraphs = 0;
my($c);
while($c = getc(READFILE))
{
if($C ne"\n")
{
$paragraphs++;
}
}
close(READFILE);
print("Paragraphs: $paragraphs\n");
local $/ = ''; # enable paragraph mode
open my $fh, '<', $file or die "can't open $file: $!";
1 while <$fh>;
my $count = $.;
請參閱http://www.perl.org/books/beginning-perl/上的Beginning Perl書。 特別是,以下章節將為您提供幫助: http : //docs.google.com/viewer?url=http%3A%2F%2Fblob.perl.org%2Fbooks%2Fbeginning-perl%2F3145_Chap06.pdf
如果要通過雙換行符(“ \\ n \\ n”)確定段落,則可以這樣做:
open READFILE, "<$filename"
or die "cannot open file `$filename' for reading: $!";
my @paragraphs;
{local $/; @paragraphs = split "\n\n", <READFILE>} # slurp-split
my $num_paragraphs = scalar @paragraphs;
__END__
否則,只需更改代碼中的“ \\ n \\ n”即可使用您自己的段落分隔符。 最好使用\\n{2,}
,以防萬一有人對Enter鍵發瘋。
如果您擔心內存消耗,那么您可能需要執行以下操作(對難以理解的代碼表示抱歉):
my $num_paragraphs;
{local $/; $num_paragraphs = @{[ <READFILE> =~ /\n\n/g ]} + 1}
雖然,如果您想繼續使用自己的代碼,可以將if($C ne"\\n")
更改為if($c eq "\\n")
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.