[vienna.pm] interpolative context

Stefan Weiss spaceman.spiff at foo.at
Thu Aug 9 14:03:10 CDT 2001


* * * vienna-pm-list * * *


From: "Johannes Fuernkranz" <juffi at ai.univie.ac.at>

> Eine einfache Frage, fuer die mir ueberraschenderweise das Kamel keine
> Antwort zu geben scheint:

Aber perldoc hat eine Antwort:
perldoc -q "expand variables"

| How can I expand variables in text strings?
| 
| Let's assume that you have a string like:
| 
|     $text = 'this has a $foo in it and a $bar';
| 
| If those were both global variables, then this would suffice:
| 
|     $text =~ s/\$(\w+)/${$1}/g;  # no /e needed
| 
| But since they are probably lexicals, or at least, they could
| be, you'd have to do this:
| 
|     $text =~ s/(\$\w+)/$1/eeg;
|     die if $@;                  # needed /ee, not /e
| 
| It's probably better in the general case to treat those
| variables as entries in some special hash. For example:
| 
|     %user_defs = (
|         foo  => 23,
|         bar  => 19,
|     );
|     $text =~ s/\$(\w+)/$user_defs{$1}/g;
| 
| See also ``How do I expand function calls in a string?'' in this
| section of the FAQ.


HTH,
stefan



###
You are subscribed to vienna-pm-list as "Stefan Weiss" <spaceman.spiff at foo.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list