NAME
Config::IniFile::Import - Import von MS-Windows-Format-Ini-Dateien auf Variablen
VERSION
Dieses Dokument beschreibt die Version 0.700 des Moduls Config::IniFiles::Import vom 15.05.2003
ANWENDUNG
use Config::IniFiles::Import;
...
$INI = Config::IniFiles::Import -> new( -option => value [ ... ] );
...
$INI -> Import(
-loadsection => [ qw( section1 section2 ... ) ],
-loadvariable => [ qw( section3::param1+param2 section4::param1 ... ) ],
-protocol => filehandle ,
-exportto => 'Package'
);
BESCHREIBUNG
Die Definitionen von INI-Dateien werden mittels des Moduls 'Config::IniFiles' gelesen, und mit dem vorliegenden Modul auf korrespondierende Variablen importiert.
Dabei werden die Variablen-Namen wie folgt gebildet:
- Der Sektions-Name wird mit dem Parameter-Namen, getrennt durch Unterstrich verbunden.
- Standardmaessig werden die Variablen in dem Package 'INI' abgelegt. Dies kann jedoch durch die
Option '-exportto' beim Aufruf der Methode 'Import' geaendert werden.
Aus diesem Grunde gelten fuer die Sektions- und Parameter-Namen folgende Einschraenkungen:
- Diese Bezeichner duerfen nur aus gueltigen Wortzeichen bestehen
( a-z, A-Z, 0-9, _ )
- Die Gross-/Kleinschreibung wird beachtet und fuehrt zu verschiedenen
Variablennamen
Wertesubstitution mit INI-Datei Eintraegen
Es besteht die Moeglichkeit eine Wertesubstitution in den INI-Dateien vorzunehmen zu lassen. Hierzu ist folgende Syntax anzuwenden:
Parameter = ...{Sektion::Parameter}...
- Substitutions-Beispiel
-
[SEKTION_1] Wert1 = bla Wert2 = foo{SEKTION_1::Wert1}foo Das ergibt fuer Wert2 den Wert 'fooblafoo'.
Wertesubstitution mit 'predefinierte Variablen'
Fuer die Substitution steht ein Satz von prefinierten Variablen zur Verfuegung, die wie folgt angesprochen werden koennen:
Parameter = ...{Variable}...
Predefinierte Variable
Folgende 'predefinierte Variablen' sind definiert:
- ScriptPath
Enthaelt den Pfad zum aktuellen Perl-Skript.
- UserName
Enthaelt den Namen des User's, der das aktuelle Skript gestarten hat.
- TimeShort
Enthaelt die Uhrzeit des Programmstarts in der Form 'HH:MM'
- TimeLong
Enthaelt die Uhrzeit des Programmstarts in der Form 'HH:MM:SS'
- DateShort
Enthaelt das Datum des Programmstarts in der Form 'TT.MM.JJJJ'
- DateLong
Enthaelt das Datum des Programmstarts in der Form 'TT.MMM.JJJJ'
- DateTime
Enthaelt das Datum und die Uhrzeit des Programmstarts in der Form 'TT.MM.JJJJ - HH:MM'
- Substitutions-Beispiel fuer 'predifinierte Variablen'
-
[SEKTION_2] Wert3 = {ScriptPath} Das ergibt fuer Wert3 den Pfad zum aktuellen Perl-Skript.
METHODEN
new - Klassenkonstruktor
$INI = Config::IniFiles::Import -> new( -option => value, -option => value, ... );
Alle hier uebergebenen Parameterpaare ( Option / Wert ) werden an das Modul 'Config::IniFiles' weitergereicht. Die Beschreibung der Parameter ist dessen Dokumentation zu entnehmen. Nachfolgend werden jedoch die moeglichen Parameter aufgefuehrt.
Import - Importiert die Werte auf Variable
$INI -> Import( -loadsection => [ qw( section1 section2 ... ) ], -loadvariable => [ qw( section3::param1+param2 section4::param1 ... ) ], -protocol => filehandle , -exportto => 'Package' );
Diese Methode liest die INI-Datei(en) ein und importiert die Daten auf Variable. Die Definition der Variablen erfolgt in dieser Methode als globale Variable ( use vars qw( ... ) ). Damit koennen Programme die dieses Modul anwenden, weiter mit dem Pragma 'use strict' arbeiten.
Syntax: '-loadsection' => [ qw( section1 section2 ... ) ]
Wird diese Option uebergeben, so werden nur die benannten Sektionen importiert. Andernfall erfolgt der Import aller Sektionen.
Syntax: '-loadvariable' => [ qw( section1::par1+par2 section2::par ... ) ]
Wird diese Option uebergeben, so werden nur die benannten Variablen importiert.
Syntax: '-protocol' => filehandle
Wird diese Option uebergeben, so wird der Import der Variablen in der durch den 'filehandle' uebergebenen Datei protokolliert.
Syntax: '-exportto' => 'PackageName'
Standardmaessig werden die Variablen in dem Package 'INI' abgelegt. Dies kann mit dieser Option beim Aufruf der Methode geaendert werden.
- Hinweis
Die Optionen '-loadsection' und '-loadvariable' koennen kombiniert werden.
BEISPIEL
Das nachfolgende Beispiel liest die INI-Dateien 'Ini1.ini' und 'Ini2.ini' aus dem aktuellen Verzeichnis ein. Es werden die Angaben der Sektionen 'GLOBAL' und 'VERZEICHNISSE' sowie die Parameter 'Name' und 'TempDir' der Sektion 'USER' auf die entsprechenden Variablen des Package 'Cfg' des Programms importiert. Weitere eventuell vorhandene Sektionen und Variablen werden ignoriert.
Die importierten Variablen werden in der Datei 'Load.prt' im aktuellen Verzeichnis protokolliert.
Datei - Ini1.ini
[GLOBAL]
Script = {ScriptPath}
[USER]
Name = {UserName}
TmpDir = C:\Tmp
TempDir = C:\Temp\{UserName}
Datei - Ini2.ini
[VERZEICHNISSE]
Daten = {USER::TempDir}\Daten
Protokolle = {USER::TempDir}\Protokoll
[UPDATE]
Programme = D:\Update\Prg
Dokumentation = D:\Update\Doc
Programm
#!/usr/bin/perl
###############################################################################
#
use Config::IniFiles::Import;
use File::Spec;
#
$FH = FileHandle -> new( File::Spec -> catfile( qw( . Load.prt ) ), 'w' );
#
print $FH "Test des Moduls : Config::IniFiles::Import\n";
print $FH '-' x 100 . "\n\n";
#
$INI = Config::IniFiles::Import ->
new( -file => File::Spec->catfile( qw( . Ini1.ini ) ),
-import => Config::IniFiles ->
new( -file => File::Spec->catfile( qw( . Ini2.ini ) ) )
);
#
$INI -> Import(
-loadsection => [ qw( GLOBAL VERZEICHNISSE ) ],
-loadvariable => [ qw( USER::Name+TempDir ) ],
-protocol => $FH ,
-exportto => 'Cfg'
);
#
print "$Cfg::USER_Name\n";
#
###############################################################################
FEHLERMELDUNGEN
Bei einer Substitution wird auf eine nicht definierte Kombination aus Sektion und Schluessel zugegriffen, oder es wird eine nicht existente predifinierte Variable angesprochen.
Das Skript wird in diesem Fall mit einer entsprechenden Fehlermeldung abgebrochen!
Die Angegeben Variable konnte nicht erzeugt werden.
Das Skript wird in diesem Fall mit einer entsprechenden Fehlermeldung abgebrochen!
PRAGMAS
strict
vars
MODULE
Carp
FindBin
Config::IniFiles Version : 2.29 ( oder neuer )
Bei dem Einsatz unter Windoofs ist folgender Patch in dem Modul 'Config::IniFiles' vorzunehmen:
- Im Unterprogramm 'ReadConfig' ist die Anweisung wie folgt zu aendern:
- von: 'while($self->{allowcontinue} && $val =~ s/\\$//) {'
- in : 'while($self->{allowcontinue} && $val =~ s/\s\\$//) {'
VERSIONEN
0.100 - 22.09.2002 - JvB
Erste Test- und Entwicklungsversion
0.200 - 22.09.2002 - JvB
Mit der Option '-loadsection', der Import-Methode, ist es moeglich ausgewaehlte Sektione zu
importieren.
0.210 - 23.09.2002 - JvB
Ueberarbeitung der Dokumentation und Straffung des Codes
0.300 - 23.09.2002 - JvB
Mit der Option '-protocol' besteht die Moeglichkeit den Variablenimport zu Protokollieren.
0.301 - 24.09.2002 - JvB
Fehlerkorrektur:
- Wurde die Option '-loadsection' nicht angegeben, wurden der Variablenimport nicht
durchgefuehrt.
0.400 - 14.05.2003 - JvB
Veraenderung des Importes der INI-Daten.
- Die Namen der Variablen werden nach einem neuen Verfahren gebildet.
- Das Package, in das der Import der Variablen erfolgt ist waehlbar.
0.500 - 14.05.2003 - JvB
Erweiterung fuer die Verarbeitung predefinierter Variablen.
- ScriptPath, UserName
0.600 - 15.05.2003 - JvB
Erweiterung fuer den Import einzelner Parameter einer Sektion.
- Mit der Option '-loadvariable' koennen nur einzelne Parameter einer Sektion uebernommen
werden.
0.700 - 15.05.2003 - JvB
Weitere predefinierte Variable hinzugefuegt.
- TimeShort, TimeLong, DateShort, DateLong, DateTime
Veraenderung des optionalen Protokolldrucks.
AUTOREN
JvB - Juergen von Brietzke - juergen.von.brietzke@t-online.de
COPYRIGHT
Copyright (c) 2002, 2003 by JvB.
Dieses Modul ist freie Software. Die Benutzung und / oder Veraenderung unterliegt der selben Lizenz wie Perl.
4 POD Errors
The following errors were encountered while parsing the POD:
- Around line 372:
'=item' outside of any '=over'
- Around line 380:
You forgot a '=back' before '=head2'
- Around line 447:
'=item' outside of any '=over'
- Around line 454:
You forgot a '=back' before '=head1'