Hi,
hier mal ein Ansatz:
Anstatt %ENV verwende ich hier %foo, um die Ausgabe übersichtlicher zu haben.
Es wird nicht geprüft, ob eine zu ersetzende Variable wirklich gesetzt ist.
Variable3 ist nicht ausreichend benannt (fehlendes % am Ende)...
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
use strict;
use warnings;
my %foo;
while ( my $line = <DATA> ) {
if ( my ( $var, $wert ) = $line =~ m{set\s+([^=]+)=(.+)$} ) {
if ( $wert =~ m/%/ ) {
$wert =~ s/%([^%]+)%/$foo{$1}/g;
}
$foo{$var} = $wert;
}
}
use Data::Dumper;
print Data::Dumper->new( [ \%foo ], [ '*foo' ])->Sortkeys(1)->Dump;
__DATA__
set Variable1=c:/ursprungspfad/site1
set Variable2=%Variable1%/info
set Variable3=verzeichnis
set Variable4=%Variable1%/%Variable3
Ausgabe:
%foo = (
'Variable1' => 'c:/ursprungspfad/site1',
'Variable2' => 'c:/ursprungspfad/site1/info',
'Variable3' => 'verzeichnis'
'Variable4' => 'c:/ursprungspfad/site1/%Variable3',
);
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!