Schrift
[thread]8863[/thread]

Bestimmte Variablen auslagern in eine Datei

Leser: 1


<< >> 7 Einträge, 1 Seite
leissi
 2007-03-22 15:56
#75258 #75258
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

mal eine Frage. Ich habe jetzt mein Script fertig und ist lauffähig.
Jetzt habe ich festgestellt das immer wenn Änderungen bezüglich Datei etc sind, ich direkt in das Perlscript gehen muss. Um das zu vermeiden, möchte ich bestimmte Parameter wie z.B.
my $file = '\\\\svxxxxx\\f$\\log\\MSSQL$QCSQLSxxxx\\SqlSrvJobs\\reset_QcDemoPj.log';

auslagern in eine Datei. Dort können diese Parameter dann angepasst werden.
Im Perlscript habe ich die Datei geladen wie folgt
Quote
# ####################################################
# parameter und funktion fuer das script einlesen
######################################################
#Übergabe der globalen Variablen aus der main.ini Datei
my $parameterFile = "D://Perl//Main.cfg";
open(IN, $parameterFile) || die "Paramterfile $parameterFile nicht gefunden!";
my @par = <IN>;
#close(IN);

eval( join("\n", @par) );


So nun weiss ich nicht wie ich die Parameter entsprechend übergeben kann im Perlscript.

Kann mir einer einen Tip geben?

Gruss Leissi
renee
 2007-03-22 16:07
#75259 #75259
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Arbeite lieber mit einer richtigen Konfigurationsdatei (egal, ob YAML, INI oder etwas anderes).

Mit CPAN:Config::Any:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Config::Any;
6
7 my $file = 'test.ini';
8
9 my $cfg = Config::Any->load_files({
10 files => [$file],
11 use_ext => 1,});
12
13 my ($c_file,$config) = each %{$cfg->[0]};
14 my $path = $config->{Sektion}->{Path};


Und die passende ini-Datei:
Code: (dl )
1
2
  [Sektion]
Path=\\\\svxxxxx\\f$\\log\\MSSQL$QCSQLSxxxx\\SqlSrvJobs\\reset_QcDemoPj.log


Mit anderen Config-Modulen wie z.B. CPAN:Config::IniFiles oder CPAN:YAML::Tiny ist es kürzer, dafür ist es so flexibler (was die Art der Config-Datei angeht).\n\n

<!--EDIT|renee|1174572693-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2007-03-22 16:12
#75260 #75260
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für den Tip, werde ich dann umsetzen.

Danke

Leisii
GwenDragon
 2007-03-22 16:53
#75261 #75261
User since
2005-01-17
14578 Artikel
Admin1
[Homepage]
user image
Schau dir auch mal dort die Aufstellung an:
Welches Config:: Modul am sinnvollsten? Konfigurationen lesen/schreiben
die Drachin Gwendolyn
pktm
 2007-03-22 22:53
#75262 #75262
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wenn du Perl-Code zur Konfiguration liebst kannst du auch CPAN:Config::Auto benutzen.
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-03-23 00:01
#75263 #75263
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
open CONFIG, "main.cfg" or die $!;
while (<CONFIG>) {
chomp;
s/\/\*.*//;
s/^\s+//;
s/\s+$//;
next unless length;
my ($key, $value) = split(/\s*=\s*, $_, 2);
$config{$key} = $value;
}

#main cfg
Name = Froschpopo
bloonix
 2007-03-23 10:47
#75264 #75264
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Froschpopo,22.03.2007, 23:01]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
open CONFIG, "main.cfg" or die $!;
while (<CONFIG>) {
  chomp;
  s/\/\*.*//;
  s/^\s+//;
  s/\s+$//;
  next unless length;
  my ($key, $value) = split(/\s*=\s*, $_, 2);
  $config{$key} = $value;
}

#main cfg
Name = Froschpopo
[/quote]
Das ist unbrauchbar!

1. Syntaxfehler bei split()
2. Kommentare werden nicht richitg behandelt
3. Keine Sektionen, Strukturen moeglich
4. CONFIG wird nicht geschlossen

use CPAN::Modules; !

main.cfg

# comment
name = froschpopo # comment

$VAR1 = {
         '# comment' => undef,
         'name' => 'froschpopo # comment'
       };
\n\n

<!--EDIT|opi|1174640269-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< >> 7 Einträge, 1 Seite



View all threads created 2007-03-22 15:56.