簡體   English   中英

如何將參數傳遞給子例程?

[英]How do I pass parameters to a subroutine?

我在理解子例程語法時遇到了困難。

使用以下代碼:

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);
}

在“ build dyne文件”子例程中,“ for循環”遍歷哈希鍵,而$ i參數在外部“ for循環”內部使用。

希望您能理解問題,如果沒有,我會盡力解釋。

謝謝你的回答。

您必須接收參數。

sub build_dyne_file { 
    my $i = shift; # take it off the parameter queue
    ...

您在下面的for循環中使用詞法作用域對其進行了聲明(使用my ),因此,只有該循環才能“看到”它。 將其傳遞給build_dyne_file ,您需要接收參數。

請參閱perlsub

您需要在子例程中獲取$i參數:

sub build_dyne_file
{
  open(DYNAP, "+>$veri_dir/$dyna_para") or die $!;

  # the crucial omission...
  my $i = shift;

    for (keys %hash){
        print DYNAP "#define ",$_," ",$hash{$_}->[$i],"\n";
    }
    close(DYNAP);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM