将变量替换为字符串,其结果来自perl中的子例程

时间:2017-09-16 15:16:01

标签: perl

我正在尝试替换变量" ex"用它的字符串值(它来自子程序" potatoex()"并将它放在另一个变量" goodge"的定义中, 没有得到任何语法错误,但这似乎没有成功。 请帮忙。

sub potatoex {    
  my $potato="Junos: 17.4DCB";
  if($potato = ~/"Junos: 17.4[a-zA-Z0-9_.]*"/) {
    print "/var/home/smoketest/dhcpv6.pl.28709.log";
  }
}

主要:

{
  my $ex= potatoex();
  my $goodge= "Apurva $ex Arnav";
  print $goodge;
}

CURRENT O / P:/var/home/smoketest/dhcpv6.pl.28709.logApurva 1 Arnav

预计O / P:Apurva /var/home/smoketest/dhcpv6.pl.28709.log Arnav

谢谢, Apurva

1 个答案:

答案 0 :(得分:1)

print来自您的子程序,而不是return来自它的值。尝试在return中使用potatoex

sub potatoex {    
  my $potato    = q{Junos: 17.4DCB};
  my $returnVal = '';

  if( $potato =~ /Junos: 17\.4[a-zA-Z0-9_.]*/ ) {
    $returnVal = q{/var/home/smoketest/dhcpv6.pl.28709.log};
  }

  $returnVal;
}

{
  my $ex     = potatoex();
  my $goodge = qq{Apurva $ex Arnav};

  print $goodge;
}

虽然您可以在return块中使用if(而不是print),但我决定使用一个变量,该变量将始终返回您尝试的值或一个空字符串。您可以明确说明返回return returnVal;,但它并不是必需的,因为perl允许隐式返回(记下这一点并弄清楚它是否适合您的最佳实践)。