-3

これまでの私のコードは、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;
}
4

3 に答える 3

1

最後の foreach は、それが機能することを証明するだけです-空白行を無視しないことに注意してください-それらを保持したい場合があると考えました。

#!/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 $_;
}
于 2012-07-25T15:39:17.537 に答える
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);
}
于 2012-07-25T15:35:02.267 に答える
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;
}
于 2012-07-26T08:23:59.757 に答える