所以我在Perl的初学者课程中有这个任务,我已经完成了一些东西并且他们做得很好,但我在这里完全遇到了一堵砖墙,我无法再进一步了,我的猜测是答案很简单,我似乎无法修复它。
我有一个带有一些文本的文本文件,我正在尝试做的就是将该文件的内容写入终端,我可以用
open (DATA, "example.txt") or die "an error occured: $!";
while(<DATA>)
{
print "$_\n";
}
但是,我还需要为输出的每一行添加编号,我正在尝试使用$。但这只给了我一个“1”作为输出,我整个上午一直在尝试不同的东西,但我似乎无法弄明白。
我想要的是一个如下所示的输出:
等等。
任何可以帮助我解决这个问题的人吗?
答案 0 :(得分:2)
open (DATA, "example.txt") or die "an error occured: $!";
while(<DATA>) {
print "$.. $_\n";
}
要在每个句子后开始一个新行(句号后跟至少一个空格),您可以使用以下内容:
$line = 0;
while(<DATA>)
{
@lines = split /\. +/;
for (@lines) {
++$line;
print "$line. $_\n";
}
}
(很可能有更好的perl成语......)
答案 1 :(得分:2)
请,请不要使用文件句柄DATA
打开文件!!首先,这就发生在昨天,它会导致各种problems!其次,DATA
是使用保存在脚本底部的内容的特殊句柄。
use strict;
use warnings;
while(<DATA>) {
print "Hello $_\n";
}
__DATA__
Joel
Larry
第三,也是最重要的一点,你应该使用更现代的Perl,使用3-arg open和lexical文件句柄!
use strict;
use warnings;
#if you don't want to do "or die" all the time
#use autodie;
open( my $handle, '<', "example.txt" ) or die "$!";
while(<$handle>) {
#do whatever
}
如果您的教师/教科书没有使用现代Perl运动中的任何内容,您应该通知他们,或者获得new book。