0

Perl は初めてで、ログ ファイルから情報 (NAME、DESCR、PID、VID、SN) を抽出して使用したいと考えています。以下は、ログ ファイル内の 1 つのエントリのサンプルです。

NAME: "data1023", DESCR: "some information"
PID: ABC-0123-xyz      , VID: V01 , SN: ABC1234567

コンマを区切り文字として使用して分割を使用しようとしましたが、あまり役に立ちません。誰かがこの問題へのより良いアプローチを提案できますか?

4

1 に答える 1

3

あなたは私たちに多くを与えていませんが、エントリごとに2-linsを含むがこれに限定されないいくつかの仮定に基づいて、好みに合わせて構築できる簡単なソリューションを次に示します.

#!/usr/local/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $lineno;
my @parts;
my $entryno;
my $line;
my @log;

while (<>) {
    $line = $_;
    chomp $line;
    $lineno++;
    if ( $lineno % 2 ) {

        #It is line one of the entry
        $entryno++;
        @parts = split( /,\s*/, $line );
    }
    else {
        push( @parts, split( /,\s*/, $line ) );

        push( @log, [@parts] );
    }
}

print Dumper(\@log);

それはすべて、データをどのように表示するかによって異なります。これが行うのは、各エントリのすべての要素を 1 つの配列項目として配置し、次に各エントリを配列項目として配置して、配列の配列を構築することだけです。

于 2012-07-17T07:00:07.757 に答える