$i = "foo"; $$i = 10; # Sets $foo to 10 ${"i"} = 10; # Sets $foo to 10 &$i(); # Calls foo(); push (@$i, 10, 20); # Pushes 10,20 into @foo
Run-time expression evaluation:
while (defined($str = <STDIN>)) { eval ($str); print "Error: $@" if $@; }
This is a tiny Perl shell, which reads standard input, treats $str as a small program, and puts the compilation and run-time errors in $@.
Dynamic substitutions. Use the /e flag for the s/// operator, to specify an expression instead of a pattern:
$l = "You owe me 400+100 dollars"; $l =~ s/(\d+)\+(\d+)/$1 + $2/e; print $l; # prints "You own me 500 dollars"
Module and object method invocations (see also #20 and #21):
$modulename->foo(); # Calls foo() in the module indicated by # $modulename