我对perl的经验很少,尝试逐行读取简单的文本文件并将所有对象放入数组中。你能帮忙吗?
文字档案:
AAA
BBB
CCC
DDD
EEE
需要按索引访问数组中的每个对象,以获取DDD元素的访问权限。
THX
答案 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