Thread ksh-Befehl in perl?
(5 answers)
Opened by schuetze09 at 2008-10-13 11:11
Eine Variante, die sich ein wenig mehr wie eine Ksh verhält.
Code (perl): (dl
)
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 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @ini=<DATA>; print Dumper(parse(@ini)); sub parse { my @ini=@_; my %ret; for my $data (@ini) { $data=~s/#.+$//; $ret{$1}=$2 if($data=~/^\s*(.+?)\s*=\s*(.+?)\s*$/); } my $reg=join('|', keys(%ret),keys(%ENV) ); while(my ($k,$v)=each(%ret)) { if($v=~/^'/)#' { $v=~s/^'|'$//gs; $v=~s/\\'/'/gs; } else { if($v=~/^"/)#" { $v=~s/^"|"$//g; } $v=~s/\\\$/#DOLLAR#/g; $v=~s/\$($reg)/$ret{$1}? $ret{$1}: $ENV{$1}? $ENV{$1}: ''/ge; $v=~s/#DOLLAR#/\$/g; $v=~s/\\//g; } $ret{$k}=$v if($v ne $ret{$k}); } return \%ret; } __DATA__ # ein Kommentar TEST=Ein test # auch eingeschoben WER=Jemmand besonderes WAS=$TEST TTT=$SHELL EEE=\$SHELL Name=Blub Email=$Name@rabarber.test BLA='ein Text dessen $EEE nicht beachtet wird' BLUB="Hier wird $TTT beachtet. das das \$Name aber nicht." |