"John W. Krahn" schreef:

> #!/usr/bin/perl
> use warnings;
> use strict;
>
> open SERVERS, '<', 'sample.txt' or die "Cannot open 'sample.txt' $!";
>
> # set the Input Record Separator
> $/ = "--------------------------\n";
>
> while ( <SERVERS> ) {
>      my $server_name = /^Server Name:\s+(.+)/m;
>      my $manufac     = /^Manufacturer:\s+(.+)/m;
>      my $model       = /^Model:\s+(.+)/m;
>      my $num_procs   = /^Number Of Processors (Includes
> MultiThread):\s+(\d+)/m;
>      my $serial_num  = /^Serial Number:\s+(.+)/m;
>      my $mem         = /^Mem Total:\s+(.+)/m;
>      my @disks       = /^DeviceID:\s+([A-Z]:)/mg;
>      my $spack       = /^Service Pack:\s+(.+)/m;
>
>      print join( ':', $server_name, $manufac, $model, $num_procs,
> $serial_num, $mem, @disks, $spack ), "\n";
>      }
>
> __END__

Nice approach, but it needs a s/(my \$\S+)/($1)/g.


my @title = do { no warnings 'qw';
    qw/Server_Name Manufacture Model #_of_Procs Serial# Total_Mem Disk1
Disk2 Disk3 Service_Pack/;
};
print join("\t", @title), "\n";

# set the Input Record Separator
$/ = "--------------------------\n";

while ( <SERVERS> ) {
     my ($server_name) = /^Server Name:\s+(.+)/m;
     my ($manufac    ) = /^Manufacturer:\s+(.+)/m;
     my ($model      ) = /^Model:\s+(.+)/m;
     my ($num_procs  ) = /^Number Of Processors \(Includes
MultiThread\):\s+(\d+)/m;
     my ($serial_num ) = /^Serial Number:\s+(.+)/m;
     my ($mem        ) = /^Mem Total:\s+(.+)/m;
     my @disks         = /^DeviceID:\s+([A-Z]:)/mg;
     my ($spack      ) = /^Service Pack:\s+(.+)/m;

     push @disks, "" while @disks < 3;
     print join( "\t", $server_name, $manufac, $model, $num_procs,
$serial_num, $mem, @disks, $spack ), "\n";
}



A next step could be to set up

    my $qr_a = qr/(.+)/;
    my $qr_d = qr/([0-9]+)/;

    my %fields = (
        "Server Name"   => $qr_a,
        "Manufacturer"  => $qr_a,
        "Model"         => $qr_a,
        "Number Of Processors (Includes MultiThread)" => $qr_d;
        "Serial Number" => $qr_a,
        "Mem Total"     => $qr_a,
        "@DeviceID"     => qr/([A-Z]:)/;
        "Service Pack"  => $qr_a,
    );

and code a mini parser. Or use a parser module.

-- 
Affijn, Ruud

"Gewoon is een tijger."


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to