Schrift
[thread]6344[/thread]

Variablen mit Werten ersetzen mit regex

Leser: 2


<< >> 7 Einträge, 1 Seite
alexus-777
 2004-06-17 11:52
#83521 #83521
User since
2004-04-13
121 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich lese aus einer Datei solche Zeile aus:
Code: (dl )
$HOME/$USER/info.txt


ich möchte Variablen mit Werten z.B. $HOME mit $ENV{HOME} und $USER $ENV{USER} ersetzen.

Hab schon probiert, ich bekomm das einfach nicht hin

Hat jemand ein Lösungsvorschlag?

Gruß Alexander
sri
 2004-06-17 12:04
#83522 #83522
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
perldoc perlre
Taulmarill
 2004-06-17 13:07
#83523 #83523
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
was hast du denn bisher versucht?

den string $HOME mit dem wert der variable $ENV{HOME} ersetzen schafft z.B.
Code: (dl )
s/\$HOME/$ENV{HOME}/
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
alexus-777
 2004-06-17 13:17
#83524 #83524
User since
2004-04-13
121 Artikel
BenutzerIn
[default_avatar]
Problem ist dass ich vorher nicht weiß ob da $HOME oder was anderes steht. Ich brauch eine RX Anweisung die alle Wörter im String die mit $ anfangen durch $ENV{Wort} ersetzt. Es hat bisher nicht geklappt weil Anzahl der Wörter die mit $ anfangen variiren kann.

Gruß Alexander\n\n

<!--EDIT|alexus-777|1087463925-->
Taulmarill
 2004-06-17 13:27
#83525 #83525
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
dafür musst du alle "word-characters" hinter dem $ capturen (mit klammern), dann hast du diese in der variable $1. die kannst du dann in $ENV{} einsetzen.
Code: (dl )
s/\$(\w*)/$ENV{$1}/g
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
havi
 2004-06-17 13:28
#83526 #83526
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use warnings;
use strict;

my @array = ('$HOME', '$USER');

print join("\n", @array), "\n";

map {
s%\$([A-Z]+)%\$ENV{$1}%;
} @array;

print join("\n", @array), "\n";


Gruss
Gast Gast
 2004-06-17 13:29
#83527 #83527
Probier mal
Code: (dl )
my $path =~ s/\$\w+(?=\/)/$subst_var/;
<< >> 7 Einträge, 1 Seite



View all threads created 2004-06-17 11:52.