我想要一个带有参数的子,并打印以其原始形式提供的参数以及参数的评估。
在这种情况下,对参数的评估很容易,这是默认值!它以原始形式获得实际输入是困难的。
15
这将输出5 + 10 = "15"
。
我希望它输出stringr
答案 0 :(得分:8)
sub echo {
my ($expr, $result) = @_;
print "$expr = $result\n";
}
echo '5 + 10', 5 + 10;
或
sub echo {
my ($expr) = @_;
my $result = eval($expr);
die $@ if $@;
print "$expr = $result\n";
}
echo '5 + 10';
答案 1 :(得分:2)
您可以做的最好的事情是传递字符串,然后使用eval
对其进行评估。例如:
use strict;
use warnings;
sub echo {
my ($input) = @_;
print $input, "=";
print eval $input;
print "\n";
}
echo "5 + 10";
但是要始终小心eval:不要在用户输入时使用你的功能。