perl调用子例程以生成不工作的随机字符串
用于生成随机字符串的脚本:perl调用子例程以生成不工作的随机字符串,perl,variables,global-variables,subroutine,Perl,Variables,Global Variables,Subroutine,用于生成随机字符串的脚本: sub rand_Strings { my @chars = ("A".."Z", "a".."z", "0".."9"); my $string; $string .= $chars[rand @chars] for 1..8; } my $strings = &rand_Strings; print $strings; 但是,当它不在子例程中时,它会工作。如果$string是一个全局变量,它也可以工作。我错过了什么?谢谢,您需要在子例
sub rand_Strings {
my @chars = ("A".."Z", "a".."z", "0".."9");
my $string;
$string .= $chars[rand @chars] for 1..8;
}
my $strings = &rand_Strings;
print $strings;
但是,当它不在子例程中时,它会工作。如果$string是一个全局变量,它也可以工作。我错过了什么?谢谢,您需要在子例程中显式添加
return
语句。
子例程中最后一条语句的自动返回在循环构造中不起作用,在您的示例中,循环构造是for
循环。
for
循环的后缀版本相当于带大括号的常规版本
发件人:
如果未找到“return”,并且最后一条语句是表达式,则其
返回值。如果最后一条语句是循环控制结构,如
如果是“foreach”或“while”,则返回值未指定。空潜艇
返回空列表
您需要在子例程中显式添加
return
语句。
子例程中最后一条语句的自动返回在循环构造中不起作用,在您的示例中,循环构造是for
循环。
for
循环的后缀版本相当于带大括号的常规版本
发件人:
如果未找到“return”,并且最后一条语句是表达式,则其
返回值。如果最后一条语句是循环控制结构,如
如果是“foreach”或“while”,则返回值未指定。空潜艇
返回空列表
在子例程中添加
return$string
。此外,您不需要子例程名称前面的&
,这是调用子例程的(非常)老方法<代码>我的$strings=rand_strings()代码>可以…参数是可选的。自从1994年发布Perl 5以来,在调用子例程时不必使用&
。“调用子例程时不必使用&
”不仅如此,这是不正确的,&rand_Strings
应该是rand_Strings()
。在子例程中添加返回$string
。此外,您不需要子例程名称前面的&
,这是调用子例程的(非常)老方法<代码>我的$strings=rand_strings()代码>可以…参数是可选的。自1994年发布Perl 5以来,在调用子例程时不必使用&
。“调用子例程时不必使用&
”不仅如此,这是不正确的,&rand_Strings
应该是rand_Strings()
。亲爱的@xxfelixxx,我发现贴出的问题不是我真正的问题,然而,你的回答确实解决了贴出的问题,我设法解决了我真正的问题。还是谢谢你!很高兴你成功了。您可以尝试在代码上运行perlcritic
,它会让您了解非最佳实践perl代码。亲爱的@xxfelixxx,我发现发布的问题不是我真正的问题,但是,您的答案确实解决了发布的问题,我设法解决了我真正的问题。还是谢谢你!很高兴你成功了。您可以尝试在代码上运行perlcritic
,它将让您了解非最佳实践perl代码。