0

top -n1Linux システム コマンドを配列に割り当て、テキスト ファイルに書き込まれたテキストの最初の 7 行を削除しようとしています。配列から要素を出力しようとすると、初期化されていない値が使用されているというエラーが表示されます。私のアレイをシステムコマンドに割り当てるときに、私が間違っていることを誰かが示すことができますか? ありがとうございました。

編集:配列スライスを使用して最初の 7 行を削除しようとしています。

sub     processlist
{
     my $num_of_lines = 0;
    my @top_command = `top -bn1 >toptmp.txt`;

    #opening temp file, and output file.
    open(my $in, '<' , "toptmp.txt") or die "Can't read the file: $!"; #file used for initial reading
    open(my $out, '>', "top.txt") or die "can't write to file: $!"; 

    print $top_command[0], "\n";
    #looping deleting first 7 lines
    while(<$in>)
    {

            if($num_of_lines > 6) #starts writing to top.txt past line 7 (counting starts at 0)
            {
                    print $out $_;
            }
    $num_of_lines++;
    }
    close $out;
    close $in;
    system("rm toptmp.txt"); #erasing tmp file.

}

4

2 に答える 2

1

代わりに使用

top -bn1 | tail -n +8

tailコマンドがすでに目的を果たしている場合、車輪を再発明する必要はありません

于 2013-04-26T06:50:59.043 に答える
0

上位の結果をファイルに書き込んでいますが、それらを変数に取得したい場合は、それを行うべきではありません。

top -bn1の代わりに使用top -bn1 >toptmp.txt

于 2013-04-26T06:53:51.533 に答える