如何在perl中将变量从一个函数传递到另一个函数

时间:2014-06-22 21:33:32

标签: perl function scope

我正在一个函数中初始化一个变量,并希望将此变量传递给另一个函数。此变量包含char值。 我试过传入引用和解除引用,声明函数之外的变量,并使用local。

我也看了perlmonks,perl通过示例,谷歌搜索并浏览了这个网站的解决方案但无济于事。我刚开始使用perl编程,所以任何帮助都将受到赞赏!

3 个答案:

答案 0 :(得分:0)

听起来像你需要阅读一些文档,而不仅仅是google。我建议http://www.perl.org/books/beginning-perl/

use strict;
use warnings;

sub foo {
    my $char = 'A';

    bar($char);
}

sub bar {
    my ($bar_char) = @_;

    print "bar got char $bar_char\n";
}

foo();

答案 1 :(得分:0)

如果你通过引用传递参数(见下文),它可以被第一个函数修改,然后你可以将它传递给另一个函数:

    #!/usr/bin/perl

sub f {
  $c = shift;
  $$c='m';
}

$c='a';
f(\$c);
print $c;

这将打印'm'

答案 2 :(得分:0)

您的第一个函数是否无法返回此变量?

my $config_variable = function1( $param1 );
function2 ( $config_variable, $param2 );

您也可以传回多个变量:

my ( $config_variable, $value ) = function1( $param1 );
my $value2  = function2( $param1, $config_variable );

这将是最好的方式。但是,您可以使用全局定义的变量,它们可以在函数之间使用:

#! /usr/bin/env perl
#
use strict;
use warnings;

my $value;

func1();
func2();

sub func1 {
    $value = "foo";
}

sub func2 {
    print "Value = $value\n";
}

请注意,我在两个函数之外声明了$value,因此它在整个文件中都是 global - 即使在子例程中也是如此。现在,func1可以设置它,func1可以打印它。

这个技术术语是:一个可怕的,可怕的,邪恶的想法,你应该永远, 1 想到这样做。

这是因为你认为一个特定的变量突然设置为一个值而且没有任何理由神秘地改变了值。对一个变量执行此操作已经足够糟糕了,但如果您将其用作拐杖,那么您最终会得到几十个无法通过程序跟踪的变量。

如果你发现自己这么做了,你可能需要重新考虑你的代码逻辑。