1
2
3
4
5
6
7
my %Testumgebung = ( MAILING_SERVER_ADRESSE => $Mailing_Server_Adresse_Eintrag -> get( ) ,
MAILING_SERVER_PORT => $Mailing_Server_Ports_Eintrag -> get( ) ,
MAILING_SERVER_SECURITY => $Mailing_Server_Security_Eintrag -> Subwidget( "entry" ) -> get( ) ,
MAILING_SERVER_DEBUG_MODUS => $Mailing_Server_Debug_Modus_Eintrag ,
);
&Speicherung_Testumgebung( \%Testumgebung )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
sub Speicherung_Testumgebung {
my %Speicherung_Hashes = %{ $_[ 0 ] };
foreach my $name ( sort keys %Speicherung_Hashes )
{
# printf "%-8s %s\n" , $name , $Speicherung_Hashes{ $name };
print "Werte des Hashes : $Speicherung_Hashes{ $name }" , "\n";
my $file = "test.txt";
local *CF;
open( CF , '<'. $file ) or die "Open $file: $!";
read( CF, my $data , -s $file );
close( CF );
my @lines = split( /\015\012|\012|\015/ , $data );
my $config = { };
my $Zaehler_Zeile = 0;
foreach my $line( @lines )
{
$Zaehler_Zeile++;
next if( $line =~ /^\s*#/ );
next if( $line !~ /^\s*\S+\s*=.*$/ );
my ( $key , $value ) = split( /=/ , $line , 2 );
# Remove whitespaces at the beginning and at the end
$key =~ s/^\s+//g;
$key =~ s/\s+$//g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
# print "Keys : $key" , "\n";
# print "Values : $value" , "\n";
if( $key eq $name )
{
print "Treffer" , "\n";
print "\n";
print "Ersetze Werte ..." , "\n";
my $datei = "test.txt";
my $quellwort = "$value";
my $zielwort = "$Speicherung_Hashes{ $name }";
print "Vorhandene Variable : $value" , "\n";
print "Ersetzende Variable : $Speicherung_Hashes{ $name }" , "\n";
my @Zeilen;
open( DATEI , "$datei" );
while ( <DATEI> ) { push @Zeilen, $_; }
close(DATEI);
foreach ( @Zeilen ) { $_ =~ s/$quellwort/$zielwort/; }
open(DATEI, ">$datei" );
foreach ( @Zeilen ) { print DATEI "$_"; }
close(DATEI);
}
}
}
}
1
2
3
my $datei = "test.txt";
my $quellwort = "$value";
my $zielwort = "$Speicherung_Hashes{ $name }";
1
2
3
my $datei = "test.txt";
my $quellwort = "$key = $value";
my $zielwort = "$name = $Speicherung_Hashes{ $name }";
1
2
SSL_SERVER_PRIVATE_KEY_FOLDER = D:\PERL\Programmierung\Server\Certs\
SSL_SERVER_PRIVATE_KEY_IDENTIFIER = ca-root.pem
1
2
Tk::Error: Trailing \ in regex m/SSL_SERVER_PRIVATE_KEY_FOLDER = D:\PERL\Programmierung\Server\Certs\/
at D:\PERL\Programmierung\Testumgebung\Testumgebung.pl line 399.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if( $key eq $name )
{
print "Treffer" , "\n";
print "\n";
print "Ersetze Werte ..." , "\n";
my $datei = "test.txt";
my $quellwort = "$key = \Q$value\E";
my $zielwort = "$name = $Speicherung_Hashes{ $name }";
print "Vorhandene Variable : $value" , "\n";
print "Ersetzende Variable : $Speicherung_Hashes{ $name }" , "\n";
my @Zeilen;
open( DATEI , "$datei" );
while ( <DATEI> ) { push @Zeilen, $_; }
close(DATEI);
foreach ( @Zeilen ) { $_ =~ s/$quellwort/$zielwort/; }
open(DATEI, ">$datei" );
foreach ( @Zeilen ) { print DATEI "$_"; }
close(DATEI);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use 5.010.000; ... if( $key eq $name ) { say "Treffer\n\nErsetze Werte ..."; my $datei = "test.txt"; my $quellwort = "$key = \Q$value\E"; my $zielwort = "$name = $Speicherung_Hashes{ $name }"; say "Vorhandene Variable : $value"; say "Ersetzende Variable : $Speicherung_Hashes{ $name }"; my @Zeilen; open( my $handle, '<', $datei ) or die "open($datei,r): $!"; while ( my $line = <$handle> ) { $line =~ s/$quellwort/$zielwort/; push @Zeilen, $line; } close($handle); open( $handle, '>', $datei ) or die "open($datei,w): $!"; # oder "alles auf einmal schreiben": # print $datei @zeilen; foreach ( @Zeilen ) { print $datei $_; } close($handle) or die "close($datei): $!"; }
2016-02-21T23:57:10 YAPDkannst du bitte genauer erläutern, was du meinst. Ich möchte ja bei jedem Click auf den Button in
meiner Oberfläche die aktuellen Werte des Text feldes auslesen, deswegen habe ich das Hash %Testumgebung in meiner Script innerhalb der command => sub{ } Funktion des Buttons angelegt, sonst sind die Werte nicht aktuell. Deswegen benutze ich auch die get( ) Funktion in meinem Hash. Oder ist das falsch und es gibt eine bessere Alternative?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#!/usr/bin/perl use warnings; use strict; use Tk; my $mw = Tk::MainWindow->new(); $mw->geometry("+200+200"); my $e1 = $mw->Entry(-bg => "white", -fg => "black"); $e1->pack(-padx => 10, -pady => 10); $e1->focus(); my $e2 = $mw->Entry(-bg => "white", -fg => "black"); $e2->pack(-padx => 10, -pady => 10); my $btn = $mw->Button(-text => "getit", -command => sub{getValues($e1, $e2);}); $btn->pack(-side => "right", -padx => 10, -pady => 10); Tk::MainLoop(); sub getValues { my $e1 = shift; my $e2 = shift; my %testumgebung; $testumgebung{MAILING_SERVER_ADRESSE} = $e1->get(); $testumgebung{MAILING_SERVER_PORT} = $e2->get(); foreach my $i (keys(%testumgebung)) { print "$i\t$testumgebung{$i}\n"; } }
2016-02-21T22:19:37 YAPDUm Grunde ist die Sub - Routine so in Ordnung.
QuoteCode: (dl )1
2
3
4
5
6
7
8
9
10
11my @Zeilen;
open( DATEI , "$datei" );
while ( <DATEI> ) { push @Zeilen, $_; }
close(DATEI);
foreach ( @Zeilen ) { $_ =~ s/$quellwort/$zielwort/; }
open(DATEI, ">$datei" );
foreach ( @Zeilen ) { print DATEI "$_"; }
close(DATEI);
2016-02-22T08:15:21 Raubtierkönnen die get()-Funktionen beim Zusammenbau des Hashes wirklich immer nur 1 Element zurückgeben? Oder auch mal 0 bei Fehlern oder mehrere?
perldoc Tk::Entry$entry->get
Returns the entry's string.
1
2
3
4
5
6
my $file = "test.txt";
my $File_Handler;
open( $File_Handler , '<'. $file ) or die "Open $file: $!";
read( $test, my $data , -s $file );
close( $File_Handler);