生成随机字符串的脚本:
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是全局变量,也可以工作。我错过了什么?谢谢,
答案 0 :(得分:11)
您需要在子例程中明确添加return
语句。
在子例程中自动返回最后一个语句在循环结构中不起作用,在您的示例中,循环结构是{{1}}循环。
for
循环的后缀版本等同于带花括号的常规版本。
如果没有"返回"找到,如果最后一个语句是表达式,则为 返回值。如果最后一个语句是循环控制结构,如 a" foreach"或者"而",未指定返回的值。空子 返回空列表。