如何获取 Perl 子例程的参数内容

How to get the content of an argument to a Perl subroutine

我想要一个接受参数并打印以其原始形式提供的参数以及参数评估的子程序。

在这种情况下,参数的评估很容易,这是默认值!很难以原始形式获取实际输入。

use strict;
use warnings;

sub echo {
    my ($input) = @_;
    # print "5 + 10 =";
    print $input;
    print "\n";
}

echo 5 + 10;

这将输出 15.

我要它输出5 + 10 = "15"

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';

你能做的最好的事情就是传递字符串,然后用 eval 计算它。示例:

use strict;
use warnings;

sub echo {
    my ($input) = @_;
    print $input, "=";
    print eval $input;
    print "\n";
}

echo "5 + 10";

但始终小心使用 eval:不要将您的函数与用户输入一起使用。