Perl通过参数传递将标量传递到子例程

Perl通过参数传递将标量传递到子例程,perl,Perl,如何通过参数传递将标量转换为子例程?我已经编写了以下代码,并希望将$radius从子区域(半径)传递到子区域(圆) #!/usr/bin/env perl use warnings; use strict; use Math::Trig ':pi'; sub get_radius { print "Enter the radius of the circle: \n"; my $radius = <STDIN>; } sub area_circle {

如何通过参数传递将标量转换为子例程?我已经编写了以下代码,并希望将
$radius
子区域(半径)
传递到
子区域(圆)

#!/usr/bin/env perl

use warnings;
use strict;
use Math::Trig ':pi';


sub get_radius {
     print "Enter the radius of the circle: \n";
     my $radius = <STDIN>;

}

sub area_circle {
     my $radius = get_radius();
     my $area = 0;
     $area = pi * ($radius **2);
     return $area;
}

my $area = area_circle;
print "The area is: $area \n";
#/usr/bin/env perl
使用警告;
严格使用;
使用Math::Trig':pi';
子半径{
打印“输入圆的半径:\n”;
我的$radius=;
}
子域{
my$radius=获取半径();
我的$area=0;
$area=pi*($radius**2);
返回$区域;
}
my$area=面积\圆;
打印“区域为:$area\n”;

您可以使用以下任何方法

#!/usr/bin/env perl
use warnings;
use strict;
use Math::Trig ':pi';

my $radius = 0;  #####
sub get_radius {
     print "Enter the radius of the circle: \n";
     $radius = <STDIN>;
}

sub area_circle {
     get_radius();  #####
     my $area = 0;
     $area = pi * ($radius **2);
     return $area;
}

my $area = area_circle;
print "The area is: $area \n";
#/usr/bin/env perl
使用警告;
严格使用;
使用Math::Trig':pi';
我的$radius=0#####
子半径{
打印“输入圆的半径:\n”;
$radius=;
}
子域{
获取_半径()#####
我的$area=0;
$area=pi*($radius**2);
返回$区域;
}
my$area=面积\圆;
打印“区域为:$area\n”;

#/usr/bin/env perl
使用警告;
严格使用;
使用Math::Trig':pi';
子半径{
打印“输入圆的半径:\n”;
我的$radius=;
返回$radius
}
子域{
my$radius=获取半径();
我的$area=0;
$area=pi*($radius**2);
返回$区域;
}
my$area=面积\圆;
打印“区域为:$area\n”;

子节点从@uu数组中获取参数,如下所示:

sub whatever {
    my ($param1, $param2) = @_;
}

在代码的上下文中:

#!/usr/bin/env perl

use warnings;
use strict;
use Math::Trig ':pi';

sub get_radius {
    print "Enter the radius of the circle: \n";
    my $radius = <STDIN>;
    return $radius; 
}

sub area_circle {
    my ($radius) = @_;

    my $area = 0;
    $area = pi * ($radius **2);
    return $area;
}

my $radius = get_radius;
my $area = area_circle( $radius );
print "The area is: $area \n";
#/usr/bin/env perl
使用警告;
严格使用;
使用Math::Trig':pi';
子半径{
打印“输入圆的半径:\n”;
我的$radius=;
返回$radius;
}
子域{
我的($radius)=@;
我的$area=0;
$area=pi*($radius**2);
返回$区域;
}
my$radius=获取半径;
my$area=面积\圆($半径);
打印“区域为:$area\n”;

请注意半径现在是如何传递到area_circle的,这样area_circle现在就不再绑定到get_radius子节点,并且现在可以计算圆的面积,无论从何处获取半径。

您以前的版本是正确的方法。问题是什么?你的剧本写得很好。
sub whatever {
    my $param1 = $_[0];
    my $param2 = $_[1];
}
#!/usr/bin/env perl

use warnings;
use strict;
use Math::Trig ':pi';

sub get_radius {
    print "Enter the radius of the circle: \n";
    my $radius = <STDIN>;
    return $radius; 
}

sub area_circle {
    my ($radius) = @_;

    my $area = 0;
    $area = pi * ($radius **2);
    return $area;
}

my $radius = get_radius;
my $area = area_circle( $radius );
print "The area is: $area \n";