私のperlコードで配列の合計をしようとしていますが、正しい出力を得ることができませんでした。ここでPerl配列のオーバーライド
は私のサンプルコード
use File::Find::Rule;
use Date::Parse;
my ($dir, $type, $fh, $line, $str_1,
$str_2,$str_3, $str_4);
my @array;
$dir = '/dir/test/';
$type = '*';
$str_1 = 'somestr1';
$str_2 = 'somestr2';
$str_3 = 'somestr3';
$str_4 = 'somestr4';
my @files = File::Find::Rule->file()->name($type)->in($dir);
open $out, '>>', "output_log" or die "Unable to open 'output_log' : $!";
print $out "\Logs \n";
print $out "--------------------------\n";
close $out or die "Unable to finish writing output_log : $!";
for my $file (@files) {
open $fh, '<', $file or die "can't open $file: $!";
open $out, '>>', "output_log" or die "Unable to open 'output_log' : $!";
while ($line = <$fh>) {
if ($line !~ /$str_1/ && $line =~ /$str_2/)
{
@array = $somevar # result of this loop 2,3
}
if ($line !~ /$str_3/ && $line =~ /$str_4/)
{
@array = $somevar #result of this loop 2,3,4,5,6
}
}
close $out or die "Unable to finish writing output_log : $!";
}
だからここで私は
@array = (2,3,2,3,4,5,6)
and sum of @array
何をしたいですが、私はそれぞれ、すべての行を実行しているが、代わりにされ、この配列を印刷する場合unfornately、私が書きたいです両方のブロックから結果を配列に格納するループ。 ブロックは2番目のifブロックの@arrayをオーバーライドします。私はこれをクリアにしたいと思っています!助けてください
あなたのプログラムの先頭に 'use strict'と' use warnings 'all''がありますか?あなたが書いたすべてのPerlプログラムには不可欠です。また、ファイルの先頭にすべての変数を宣言してはいけません。単純なバグを見つけにくいからです。これまでは非常に古いCコンパイラには必要でしたが、最初に定義された変数を宣言するのが良いわけではないので、今はどの言語も考えることができません。 – Borodin