我正在尝试替换变量" 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
答案 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允许隐式返回(记下这一点并弄清楚它是否适合您的最佳实践)。