如何将参数传递给子程序?

YoD*_*Dar -1 syntax perl

我在理解子程序语法时遇到了困难.

使用以下代码:

sub build_dyne_file{
open(DYNAP, "+>$veri_dir/$dyna_para") or die $!;
    for (keys %hash){
        print DYNAP "#define ",$_," ",$hash{$_}->[$i],"\n";
    }
    close(DYNAP);
}

for (my $i = 0 ; $i <$TEST_QUOTA ; $i++){
    build_dyna_file($i);
}
Run Code Online (Sandbox Code Playgroud)

在'build dyne file'子例程中,'for循环'遍历散列键,而$ i参数在外部'for循环'中使用.

我希望你理解这个问题,如果没有 - 我会试着更恰当地解释它.

谢谢你的回答.

Axe*_*man 6

你必须收到参数.

sub build_dyne_file { 
    my $i = shift; # take it off the parameter queue
    ...
Run Code Online (Sandbox Code Playgroud)

你在较低的for循环(使用)中使用词法范围声明它my,因此只有那个循环可以"看到"它.传递给它时build_dyne_file,需要接收参数.

请参阅perlsub