2010-08-31 62 views
-1

我想从Perl中的文本文件中获取输入。尽管很多信息都可以通过网络获得,但对于如何完成打印每一行文本文件这一简单任务仍然非常困惑。那么该怎么做呢?我对Perl很陌生,因此感到困惑。如何从Perl中的文本文件读取输入?

+5

你应该得到一本书,并有条不紊地研究语言。请参阅http://learn.perl.org/ – 2010-08-31 14:13:03

+1

@Sinan有一个[有关perl书籍的stackoverflow问题](http://stackoverflow.com/questions/336715/what-are-good-books-for-learning-perl )。 – 2010-08-31 14:19:25

回答

3

首先,打开文件:

open my $fh, '<', "filename" or die $!; 

接下来,使用while循环读取直到EOF:

while (<$fh>) { 
    # line contents's automatically stored in the $_ variable 
} 
close $fh or die $!; 
4

尤金已经显示出的正确方法。这里是一个更短的脚本:

#!/usr/bin/perl 
print while <> 

,或者等价地,

#!/usr/bin/perl -p 
在命令行上

perl -pe0 textfile.txt 

你应该开始学习语言有条不紊,以下像样的书,而不是通过网络上的偶然搜索。

您还应该使用Perl附带的大量文档。

请参阅perldoc perltocperldoc.perl.org

例如,打开文件在perlopentut中进行了介绍。

+0

这需要'perl -p -e0 textfile.txt'或'perl -p/dev/null textfile.txt'或类似的名称来保持stdin或textfile.txt不被视为perl程序运行。 – ysth 2010-08-31 15:13:31

+0

如果你不想在命令行中输入文件名,我会经常在快速的n脏脚本中进行硬编码:@ ARGV =“filename.txt”;您也可以在shebang(例如#!/ usr/bin/perl -p)行放置“-p”或“-n”行。 – runrig 2010-08-31 15:26:24

1
# open the file and associate with a filehandle 
open my $file_handle, '<', 'your_filename' 
    or die "Can't open your_filename: $!\n"; 

while (<$file_handle>) { 
    # $_ contains each record from the file in turn 
} 
+0

@ jm666谢谢。我在一个月前修复了一半,然后完全忘了它。现在修复。 – 2017-04-03 12:24:33