perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 27
Click for quality!




11.02.2012 / 13:26

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl/CGI: Scripts des Perl-Archiv zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragini datei auswerten
Seitenanfang
Hi, hab ma nen kleine Frage :) ma angenommen ich möchte eine ini Datei auswerten in der folgendes steht!

servers.ini:
[SRV1]
user=kunibert
[SRV2]
user=klaus
-------------------------

so das is die ini datei, die ich auswerten möchte. Mein Problem liegt gerade darin das ich zwar alles aus der ini Datei auslesen kann, aber die []-klammern bei den Servern nicht wegbekomme und den Servernamen(SRV<index>) nicht rausgefiltert bekomme.
quasi soll das script nachher 2 var. enthalten:

$user
$server

wobei user individuel angelegt werden soll um den script somit noch variablität bei erweiterung zu geben^^ :)
wichtig wär mir halt ersteinmal das i die []-klammern wegbekomme und den inhalt dazwischen in eine Variable zaubern kann. den rest hab i schon^^ :)

bin für jede hilfe dankbar^^

mfg himu

Datum: 13.12.2005-13:01

Beitragre: ini datei auswerten
Seitenanfang
danke habs schon hinbekommen^^ war recht trivial /blush

open(SERVER, "server.ini")or die " Kann Serverdatei nicht finden: $!\n";
@ini_arr = <SERVER>;
close(SERVER);

foreach $read (@ini_arr) {
if($read=~ m/\[/)
{
$read=~ s/\[//;
$read=~ s/\]//;
$read=~ s/\s+$//;
$read=~ s/^\s//;
push(@erg,$read);
}
else
{
($key,$value)=split(/=/,$read);
$key=~ s/^\s//;
$key=~ s/\s+$//;
if($key=~ m/user/)
{
$$key=$value;
push(@erg,$user);
}
else
{

$value=~ s/^\s//;
$value=~ s/\s+$//;
$$key=$value;
}
}
}

print "@erg";

Datum: 13.12.2005-15:48

Beitragre: ini datei auswerten
Seitenanfang
Hi himu,
gut, das sieht doch schon recht gut aus!

Ein paar kleine Anmerkungen:

- use strict; - das ist guter Stil und hilft später, Fehler zu finden

- $$value kann man benutzen, aber siehe 1 (das wird brutal unübersichtlich.

- Dazu sind Hashes wie gemacht, sie erlauben z.B. auch, mehrere Unterschlüssel unter einem Server zu haben - könnte ja mal nötig werden.

- einige RegExes kann man direkt mit einer Zeile abhandeln

Hier ist der Code:


#!/usr/bin/perl -w

use strict;

my %config;
my $srv;

#open(SERVER, "server.ini")or die " Kann Serverdatei nicht finden: $!\n";
my @ini_arr = <DATA>;
chomp @ini_arr;
#close(SERVER);

foreach my $read (@ini_arr) {
if ( $read =~ m/\[/ ) {
$read =~ s/[\[\]\s]//g;
print $read, "\n";
$srv = $read;
}
else {
my($key, $value) = $read =~ m/^\s*([\w.]+)\s*=\s*(.*)$/;
$config{$srv}{$key} = $value;
}
}

print $config{'SRV1.bla.com'}{'user'}; # oder entsprechend

__DATA__
[SRV1.bla.com ]
user=kunibert
[SRV2.bla.com ]
user=klaus
nochwas = vielleicht wichtiges

Gruss,
svenXY

Datum: 14.12.2005-09:55

-






-
-