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

时间:2016-02-02 14:35:27

标签: perl function output subroutine

我想要一个带有参数的子,并打印以其原始形式提供的参数以及参数的评估。

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

15

这将输出5 + 10 = "15"

我希望它输出stringr

2 个答案:

答案 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:不要在用户输入时使用你的功能。