http://qs321.pair.com?node_id=174865

Angel has asked for the wisdom of the Perl Monks concerning the following question:

Ok getting hammered by something that should not be that difficult again. I want to take a hash and substitute the keys with $keyname from a text file and place the hash value in it's place. I tried and tried and I cant get it to do the substitution
#hash that contins the data %recordData = %$hashRef; #gets the email address $emailAddress = $recordData{ "EmailAddress" }; $message = $original_message; local($/) = undef; foreach $key (keys %recordData) { my $subVar = $recordData{$key}; my $subKey = "\$" . $key; # prints the data to the screen ( debugging ) print "$subKey = $subVar\n"; $message =~ s/\$subKey/$subVar/o; print "$message"; }
any clue on how to get this to work?

Replies are listed 'Best First'.
Re: Substitution in text files
by Weasel (Sexton) on Jun 15, 2002 at 20:19 UTC
    you need not
    $message =~ s/\$subKey/$subVar/o;
    but rather
    my $qkey = quotemeta $key; $message =~ s/$qkey/$recorsData{$key}/;
    but your code snippet and your question gives me an idea that you're completely lost. Where's reading of a file after local($/)=undef;? (which is easier to write as just local $/;) where's file writing?

    To say, to answer a question you should know 50% of answer...

    Give us more details and your problem will be easier to advice...

Re: Substitution in text files
by jepri (Parson) on Jun 15, 2002 at 20:14 UTC
    s/\$subKey/$subVar/

    replaces the literal '$subKey' with $subvar. What you might have wanted is

    s/$subKey/$subVar/

    ____________________
    Jeremy
    I didn't believe in evil until I dated it.