Wim, Sorry, I forgot to mention escaping/single quoting the hash keys too...
As you defined it, your hash is empty as you are trying to set 'val1', 'val2' to VarValue{undef} ($Var1 hasn't been defined). Try VarValue{'$Var1'} or VarValue{"\$Var1"} Now the string '$Val1' is a the key, not undef. (assuming you can have hash keys that start with dollar signs) Make sense? :) I think using the -w switch and 'use strict' would have sorted this out, because you'd have had to explicity declared all of your variables, so using $Var1 (which you wouldn't have declared) would have caused an error. Tristan You Wrote: ---------- Tristan, I'm writing a script to send command from a textfile to cisco devices... I the textfile, I like to have variables, something like conf t int $interface ...... when my script reads the line, it should replace $interface by the value asked from the value the user enters... $var{$interface} contains that value... in the previous mail, $var has nothing to do with perl ;-) Sorry, I wasn't clear (in my head ;-) ) [EMAIL PROTECTED] wrote: >Wim, > >You're not declaring $var1 or $var2 anywhere. Instead you're assigning 'val1' and >'val2' to elements in the hash %VarValue. > >So something like... >$VarValue{$var1} = 'val1'; >print "I like $VarValue{$var1}!"; > >will print out... >I like val1 > >To define $var1, do something like: >$var1 = 'cheese'; > >Now $var1 is 'cheese', and $VarValue{$var1} is the value of %VarValue with a key of >'cheese'. > >My head hurts! > >Tristan > > >p.s. What are you trying to do? I.e. what's that code for? It looks like a mighty >confusing way of doing anything. Replacing a hash key with it's hash value seems like >a bad idea to me. > > >You Wrote: >---------- > >Hello people from the mighty list, > >I have a problem with substitutions... >In the piece of code, here below, >"display $var1, $var"' should be "display val1, val2"; >I don't see why, but the if condition doesn't seems to work... >and if I remove the if condition, the replacement doesn't occur... >Does any of you know why? > >$VarValue{$var1} = "val1"; >$VarValue{$var2} = "val2" >$Cmd = "display $var1, $var2"; > >foreach $Tmp ( sort keys %VarValue ) { > if ( $Cmd =~ /$Tmp/ ) { > print "***** In command $Cmd, replace $Tmp by $VarValue{$Tmp}\n"; > $Cmd =~ s/$Tmp/$VarValue{$Tmp}/g; > } >} > > > >Thanx a lot! > >Wim > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] _______________________________________________________ sent via the murky.net webmail hegemony -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]