生成随机字符串的脚本:
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
循环的后缀版本等效于带有大括号的常规版本。
来自perldoc perlsub:
如果未找到"return",并且最后一个语句是表达式,则其 返回值。如果最后一条语句是循环控制结构,例如 如果为"foreach"或"while",则返回值未指定。空子 返回空列表。