Perl - 逐行读取文本文件到数组中

时间:2015-03-10 18:31:52

标签: arrays perl file line

我对perl的经验很少,尝试逐行读取简单的文本文件并将所有对象放入数组中。你能帮忙吗?

文字档案:

AAA
BBB
CCC
DDD
EEE

需要按索引访问数组中的每个对象,以获取DDD元素的访问权限。

THX

3 个答案:

答案 0 :(得分:1)

open(my $fh, '<', $qfn)
   or die("Can't open $qfn: $!\n");

my @a = <$fh>;
chomp @a;

至于最后一段,我不知道你的意思是

$a[3]

my @matching_indexes = grep { $_ eq 'DDD' } 0..$#a;

答案 1 :(得分:1)

试试这个:

use strict;
use warnings;

my $file = "fileName";
open (my $FH, '<', $file) or die "Can't open '$file' for read: $!";
my @lines;
while (my $line = <$FH>) {
    push (@lines, $line);
}
close $FH or die "Cannot close $file: $!";

print @lines;

要在Perl中访问数组,请使用[]$。数组的第一个元素的索引是0。因此,

  $lines[3] # contains DDD

在此处查看更多内容:http://perl101.org/arrays.html

答案 2 :(得分:0)

这里的“要求”似乎非常小并且我同意@ikegami很难判断你是想要匹配数组中的文本还是按索引打印出一个元素。也许如果您通读perlintro,您可以根据自己可能尝试编写的代码添加问题并寻求更高级的帮助。

这是一个命令行,可以执行您最初提出的问题。如果在系统上运行perldoc perlrun,它将显示可用于perl单行的各种命令行开关。

  • -0400 - 啜食输入
  • -a - 使用单个空格作为拆分字符,将文件自动分割为名为@F的数组。
  • -n - 在隐式while (<>) { }循环中运行,该循环从
  • 上的文件读取输入
  • -E - 在' '
  • 之间执行脚本

所以lines.txt等于上面的文字文件:

   `perl -0400 -a -n -E 'say $F[3];' lines.txt`

输出:DDD