次の形式でエントリを次々と出力するファイルから情報を取得します: IPAddress xx [date:time -x] "method url httpversion" statuscode bytes "referer" "useragent"
そのファイルにコマンド ライン引数としてアクセスし、その情報を保存して、すべての情報をまとめて IP アドレスのアルファベット順に並べ替えるにはどうすればよいでしょうか? 何らかの形でハッシュと配列を使用する必要があると思います。
理論的には、コマンドライン引数として必要な数のテキスト ファイルを使用できますが、これまでのところ、その部分が機能していません。
./logprocess.pl monster.log #monster.log is the file that contains entries
次に、コード内で、指定されていないすべての変数がスカラーとして宣言されていると仮定します
my $x = 0;
my @hashstuff;
my $importPage = $ARGV[0];
my @pageFile = `$importPage`;
foreach my $line (@pageFile)
{
$ipaddy, $date, $time, $method, $url, $httpvers, $statuscode, $bytes, $referer, $useragent =~ m#(\d+.\d+.\d+.\d+) \S+ \S+ [(\d+/\S+/\d+):(\d+:\d+:\d+) \S+] "(\S+) (\S+) (\S+)" (\d+) (\d+) "(\S+)" "(\S+ \S+ \S+ \S+ \S+)"#
%info = ('ipaddy' => $ipaddy, 'date' => $date, 'time' => $time, 'method' => $method, 'url' => $url, 'httpvers' => $httpvers, 'statuscode' => $statuscode, 'bytes' => $bytes, 'referer' => $referer, 'useragent' => $useragent);
$hashstuff[$x] = %info;
$x++;
}
私のコンパイラは、次のようなグローバルシンボルエラーがあると言っているので、これを行うためのより良い方法は間違いなくあります。
./logprocess.pl 行 51 で % のあいまいな使用が演算子 % として解決されました (#2) (W ambiguous)(S) あなたは、あなたが思っているように解釈されないかもしれないことを言いました。通常、不足している引用符、演算子、括弧のペア、または宣言を提供することで、あいまいさを解消するのは非常に簡単です。
そしてそれは実行されません。どのモジュールも使用できません。