到目前为止,我的代码只读取第1行到第4行并打印出来。我想要做的不是打印它们就是把它们放到一个数组中。所以任何帮助将不胜感激。希望只是代码,因为它应该简短。我学习完整代码的速度要快得多,而不是打开另外50个试图将多个概念放在一起的选项卡。希望我能在某些时候学到这一点,不需要帮助。
my $x = 1;
my $y = 4;
open FILE, "file.txt" or die "can not open file";
while (<FILE>) {
print if $. == $x .. $. == $y;
}
答案 0 :(得分:1)
您应该将每一行放在一个包含push
的数组中:
my $x = 1;
my $y = 4;
my @array;
open FILE, "file.txt" or die "can not open file";
while (<FILE>) {
push (@array, $_) if ($. >= $x || $. <= $y);
}
答案 1 :(得分:1)
#!/usr/bin/perl
use warnings;
use strict;
my $fi;
my $line;
my $i = 0;
my @array;
open($fi, "< file.txt");
while ($line = <$fi>) {
$array[$i] = $line;
if ($i == 3)
{
last;
}
$i++;
}
foreach(@array)
{
print $_;
}
答案 2 :(得分:0)
你知道,一旦你获得了所需的所有数据,你就不需要继续遍历文件了。
my $x = 1;
my $y = 4;
my @array;
my $file = 'file.txt';
# Lexical filehandle, three-argument open, meaningful error message
open my $file_h, '<', $file or die "cannot open $file: $!";
while (<$file_h>) {
push @array $_ if $_ >= $x; # This condition is unnecessary when $x is 1
last if $. == $y;
}