Dear Monks
When I read perl cook book,I found the following code:
our ($rows, $cols); #if use my ($rows,$cols), it will not work no strict 'refs'; # for ${$1}/g below my $text; ($rows, $cols) = (24, 80); $text = q(I am $rows high and $cols long); # like single quotes! $text =~ s/\$(\w+)/${$1}/g; print $text; #I am 24 high and 80 long
I am wondering why lexical variable (using my) will not work in this case.
Thank you!
Update:
Got the answer, sorry for this silly question.
symbolic reference is interpreted as a string representing the name of a global variable. So if I use symbolic reference as above, it has to refer to a global variable.
By the way, does anyone know if there will be a new version of Perl Cookbook?
Update questions:
Thank you for replying to my questions.
After playing around with this '/e' modifier with s///, I do have a question which I cannot solve now:
$AGE = 17; $text = 'I am $AGE years old'; # note single quotes $text =~ s/(\$\w+)/$1/eeg; # print I am 17 years old $text =~ s/(\$\w+)/$1 * 2/eegx; #I tried to double the age, but faile +d
How I can double the age in s/// format for the above code as showed by a similar but different example:
$text = "I am 17 years old"; $text =~ s/(\d+)/2 * $1/eg; #now I am 34 years old
Thank you.
In reply to why lexical variables can not be interpolated? by lightoverhead
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |